2011-01-10 69 views
2

嘿,我在這裏做錯了什麼?對Ajax非常新穎。JQuery登錄重定向。代碼包括

$(document).ready(function(){ 
$('#submit').click(function() { 
    $('#waiting').show(500); 
    $('#empty').show(500); 
    $('#reg').hide(0); 
    $('#message').hide(0); 

    $.ajax({ 
     type : 'POST', 
     url : 'logina.php', 
     dataType : 'json', 
     data: { 
      type : $('#typeof').val(), 
      login : $('#login').val(), 
      pass : $('#pass').val(), 


     }, 
     success : function(data){ 
      $('#waiting').hide(500); 
      $('#empty').show(500); 
      $('#message').removeClass().addClass((data.error === true) ? 'error' : 'success') 
       .text(data.msg).show(500) 
      if(data.error === false) 
       window.location.replace("http://blahblah.com/usercp.php");  
      if (data.error === true) 
       $('#reg').show(500); 
       $('#empty').hide() 
     }, 

     error : function(XMLHttpRequest, textStatus, errorThrown) { 
      $('#waiting').hide(500); 
      $('#message').removeClass().addClass('error') 
       .text("There was an Error. Please try again.").show(500); 
      $('#reg').show(500); 
      $('#empty').hide(); 
           Recaptcha.reload(); 

     } 
    }); 

    return false; 
}); 

});

它登錄得很好,並給出了成功的消息就好了,只是沒有運氣的window.location.replace。我怎樣才能解決這個問題?

回答

0

看起來data.error是真實的,即使你在success分支結束了。嘗試通過提醒來澄清您的程序流程。

success : function(data){ alert('success branch'); $('#waiting').hide(500); $('#empty').show(500); $('#message').removeClass().addClass((data.error === true) ? 'error' : 'success') .text(data.msg).show(500) if(data.error === false) alert('no data error'); window.location.replace("http://blahblah.com/usercp.php");
if (data.error === true) alert('data error'); $('#reg').show(500); $('#empty').hide() },

0

試試這個:

... 
if(data.error === 'false') 
window.location.replace("http://stackoverflow.com"); 
... 

... 
if(data.error == 'false') 
window.location.replace("http://stackoverflow.com"); 
... 
+0

測試兩個仍然沒有運氣。謝謝,雖然! – NoviceCoding 2011-01-10 19:50:09

+0

從PHP返回$ data ['錯誤'] ='假';不是$數據['錯誤'] =假; – Diablo 2011-01-10 19:55:54

+0

嘿,如果和else語句在JQuery中有括號,就像他們在php中一樣嗎? – NoviceCoding 2011-01-10 22:43:23

0

你錯過了一些分號(將在IE突破):

$('#message').removeClass().addClass((data.error === true) ? 'error' : 'success') 
       .text(data.msg).show(500); //<- HERE 
(...) 
$('#empty').hide(); // <- HERE 

編輯:現在你用了很多的顯示/隱藏事件,你要顯示一個消息,然後做重定向。你應該鏈您在展會活動結束(所以表現出動畫等到年底做重定向之前重定向:

$('#message').removeClass() 
    .addClass((data.error === true) ? 'error' : 'success') 
    .text(data.msg).show(500, function(){ 
     if(data.error === false) 
       window.location.replace("http://blahblah.com/usercp.php");  
     (...) 
    }); 

但無論如何,其他答覆肯定包含了你的錯誤的主要原因,即調試什麼。你有data.error,它可能不是假的。