[英]Get params of jQuery AJAX request on complete
如何在完成后找出傳遞給(異步)jQuery AJAX請求的參數?
基本上,我正在發送一堆AJAX請求,其中不同的id作為參數傳遞,並在每個請求完成時將結果顯示給用戶。 現在,如果請求成功,我可以在請求的結果中傳回id。 但是,如果請求失敗,我不知道哪個請求失敗,即該請求的id是什么。
示例(javascript / jQuery):
for(var i=0; i < 10; i++ ) {
$.ajax({
type: "GET",
url: "get-results.php",
data: { 'id': i },
success: function(data, textStatus, xmlReq) {
data = $.parseJSON(data);
$("#result" + data.id).html(data.result);
},
error: function(xmlReq, textStatus, errorThrown) {
var id= ???;
$("#result" + id).html('error bla bla');
}
});
}
$.ajaxError
為您提供通過AJAX調用發送的數據。
.ajaxError(handler(event, XMLHttpRequest, ajaxOptions, thrownError))
ajaxOptions
對象包含可以通過$.ajax
設置的所有選項
因此,不要使用$.ajax
的error:
選項,而是使用$.ajaxError
。
$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError){
if(ajaxOptions.url.indexOf('get-results.php') != -1){
var data = ajaxOptions.data; // this is a string: 'id=1¶m2=4'
// to get the ID, you need to parse this
}
});
使用Javascript支持閉包的事實,只需編寫變量名稱(但要小心將其復制到for
block作用域內,以便它不會更改):
for(var i=0; i < 10; i++ ) {
var INDEX = i;
$.ajax({
type: "GET",
url: "get-results.php",
data: { 'id': i },
success: function(data, textStatus, xmlReq) {
data = $.parseJSON(data);
$("#result" + data.id).html(data.result);
},
error: function(xmlReq, textStatus, errorThrown) {
var id = INDEX;
$("#result" + id).html('error bla bla');
}
});
}
我相信這就是你想要的。
您需要捕獲error
函數的i
的當前值。 你用一個封閉捕獲。 所以:
error: function(id) {
return function(xmlReq, textStatus, errorThrown) {
$("#result" + id).html('error bla bla');
};
}(i)
這是error
是立即調用傳遞i
的當前值的匿名函數的結果。
您需要將其與您的回復一起傳回去。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.