簡體   English   中英

為什么我的 ajax 成功回調函數不能按預期工作?

[英]Why does my ajax success callback-function not work as expected?

我對這個 ajax 請求進行了編碼,但我不知道為什么成功方法中的代碼不起作用

即使在 chrome 瀏覽器中的網絡中出現 state: 200ok

圖像

這是 ajax 代碼:

$("#noti_filter").click(function(){
  //first add item into cart
  var item_id = 'test';
  $.ajax({
    method:"POST",
    //contentType:"application/json",
    url:"../html/notifies.php",
    data:{product_id:item_id},
    dataType: "json",
    success:function(data,state) {
      console.log(data);
      console.log(state);
      alert('ajax success');
    }
  });
});

問題是警報或控制台更不用說其他代碼了

  success:function(data,state)
  {
    console.log(data);
    console.log(state);
    alert('ajax success');

  }

來自ajax 事件文檔:

成功(本地事件)

僅當請求成功時才調用此事件(服務器沒有錯誤,數據沒有錯誤)。

由於您的服務器以200 OK響應,這意味着我們可以解決服務器問題並留下數據錯誤。

來自ajax文檔(僅相關部分):

數據類型

您期望從服務器返回的數據類型。

可用的類型(以及作為第一個參數傳遞給成功回調的結果)是:

“json”:將響應評估為 JSON 並返回 JavaScript object。 ... JSON 數據經過嚴格解析; 拒絕任何格式錯誤的 JSON 並引發解析錯誤。 從 jQuery 1.9 開始,空響應也被拒絕; 服務器應返回 null 或 {} 的響應。 (有關正確的 JSON 格式的更多信息,請參閱json.org 。)

因此,服務器返回的數據很可能被 ajax 拒絕,在這種情況下應該拋出解析錯誤。

這將是如何實現錯誤處理程序的示例:

$("#noti_filter").click(function(){
    //first add item into cart
    var item_id = 'test';

    $.ajax({
       method:"POST",
       //contentType:"application/json",
       url:"../html/notifies.php",
       data:{product_id:item_id},
       dataType: "json",
       success: function(data,state) {
           console.log(data);
           console.log(state);
           alert('ajax success');
       },
       error: function(err) {
           console.log(err.responseText);   // <-- printing error message to console
       }
    });
});

您將 dataType 定義為json dataType是您期望從服務器返回的數據類型。 您的服務器是否響應json

我假設您的 200-ok-server-request 的結果可能不是json格式,因此解析失敗並且您的success -callback 不會被調用。 您可以使用error回調 function 來捕獲錯誤。 之后你就知道確切的原因了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM