[英]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.