2013-02-20 77 views
0

考慮這種嵌套調用Ajax:純屬扯淡 - 嵌套阿賈克斯

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    data: dataString, 
    url: "includes/check.php", 
    success:function(result){ 

      if(result['response']==false){ 

       $.ajax({ 
       type: "POST", 
       dataType: "json", 
       data: dataString, 
       url: "includes/add.php", 
       success:function(){ 
        alert('Success'); 
       }); 

      } else { 
       alert('A problem has occurred!'); 
      } 

    } 
}); 

雙方的PHP腳本調用成功,做什麼,他們的目的是做的,但我不能讓嵌套的AJAX調用的成功行動顯示。

任何想法?

+0

第二個Ajax調用的響應是什麼?因爲你定義了dataType:'json',所以你必須用有效的JSON響應,否則成功事件不會觸發。 – MrCode 2013-02-20 14:52:22

+0

您是否檢查過錯誤?嘗試添加到第二個Ajax:'complete:function(xhr,status){alert(status);}'然後看看彈出。 – Kroltan 2013-02-20 14:52:59

+0

謝謝,如果我刪除行「數據類型:json」警報觸發。如果我把它放回去,我什麼也得不到。我正在通過add.php腳本向自己發送回覆,並給出的結果是'1' - 看起來是有效的? – user2056238 2013-02-20 14:59:55

回答

0

當您將dataType設置爲json時,如果響應是有效的JSON並且可以被解析,jQuery將僅觸發成功事件。如果您發送的內容不是有效的JSON,jQuery將不會觸發成功事件。從你說的評論你輸出1這是不是有效的JSON。

相反,你可以輸出一些JSON(在add.php):

echo json_encode(array('success' => true)); 

輸出

{ 「成功」:真正}

或刪除JSON的dataType設置,並可例如:

  success:function(response){ 
       if(response == "1") 
       { 
        alert('Success'); 
       } 
       else 
       { 
        alert("Fail"); 
       } 
      }); 

備註:使用Firebug或Chrome開發工具來查看Ajax響應(而不是通過電子郵件發送給自己)。

+0

我的php腳本如下... $ reply = array('response'=> true).... echo json_encode($ reply).... parseerror是什麼意思?我的php或jscript中的錯誤在哪裏?太令人沮喪了! – user2056238 2013-02-20 15:44:30

+0

如果這是服務器輸出的內容,那麼你從哪裏得到'1'?解析錯誤的意思就像在我的回答中所說的,您的PHP沒有以有效的JSON響應。 – MrCode 2013-02-20 15:47:21

+0

它看起來像我在我的PHP腳本中有一個錯誤 - 令人沮喪,雖然我無法指出它是什麼,而不是正在工作,並導致錯誤。我如何使用Firebug來讀取響應?我剛剛安裝了它... – user2056238 2013-02-20 16:24:13