2011-07-11 31 views
0

所以,我呼應{錯誤:1}:阿賈克斯/ jQuery的重定向調用不會從我的PHP工作

$(document).ready(function(){ 
    $('#form').submit(function(e){ 
     register(); 
    }); 
}); 

function register(){ 
    $.ajax({ 
     type:"POST", 
     url:"submit.php", 
     async : false, 
     data: $('#form').serialize(), 
     dataType: "json", 
     success: function(msg){ 
      if(parseInt(msg.error)==1){ 
       window.location="index.html"; 
      } 
      else if(parseInt(msg.error)==0){ 
       $('#error_out').html(msg.error); 
       e.preventDefault(); 
      } 
     } 
    }); 
} 

但它不希望重定向。相反,它返回「submit.php」1回顯。

回答

2

那麼,你不能只是返回1,因爲這不會是JSON。如果您只是返回'1'並對其執行parseInt,請將dataType設置爲'html'。


如果你想JSON,這樣做在你的PHP:

$return = array('code'=>1); 
echo json_encode($return); 

你的 '成功' 的功能應該是這樣的:

if(msg.code==1){ 
    window.location="index.html"; 
} 
else if(msg.code==0) 
{ 
    $('#error_out').html(msg.code); 
    e.preventDefault(); 
} 
else 
{ 
    // handle any other return value. 
} 

好吧,我錯了沒有正確閱讀問題。問題在於你提交表單,而沒有正確取消。在事件處理做到這一點:

$(document).ready(function(){ 
    $('#form').submit(function(e){ 
     e.preventDefault(); 
     register(); 
    }); 
}); 

可以刪除一個在你的失敗案例。那個沒有做任何事情,因爲在異步函數返回的時候堆棧已經清除了(如果它完成的話)。

+0

我知道,我知道我回來的是一個json(在我的代碼中)。只是想讓閱讀變得更簡單。 json部分工作,錯誤jquery顯示divs的工作,只是它不是重定向我。我實際上在我的代碼msg.txt中使用了代表url的地址 – user461316

+0

不要簡化測試用例,不要測試它,也不要破壞它......建立一個展現相同行爲的測試用例。 :) 任何方式,也許我的額外評論將有所幫助,否則我們將需要實際看到更多的代碼。 –

+0

你在評論中寫的是我在我的PHP代碼中確切的東西。寫1而不是完整的json是我的錯。 – user461316

1

你必須防止表單自己提交。

$(document).ready(function(){ 
    $('#form').submit(function(e){ 
     register(); 

     e.preventDefault(); // Or return false; 
    }); 
}); 

表單提交和ajax沒有機會進行回調。

+0

那我什麼時候可以提交表格? – user461316

+0

您已經通過ajax電話 – Andy

+0

提交您的表單您是否需要提交表單?從代碼示例中,我產生的印象是,您使用表單就像您的ajax調用的包裝一樣。 – petraszd