我在for
循环中包含了一堆jQuery AJAX帖子请求。每个请求都提供不同的参数。我的问题是,如果请求失败,您如何判断该请求传递了哪些参数数据?
当我尝试:
for(i = 0; i < toSubmit.length; i++) {
$.post('doSomething.php',
{id: toSubmit[i]},
function(data) { /* Do something here */ },
'json')
.error(function() {
console.log(toSubmit[i] + " didn't work!");
});
}
... error
函数只输出toSubmit
中的最后一个值,因为i
指针一直在for
循环中前进,而请求是异步触发的。 success
和complete
函数中也出现同样的情况;我的方法是确保返回的JSON包含相应的id
;但如果请求失败,我就无法使用此解决方法。
有没有办法让我了解这些信息,还是有更好的方式解雇这些请求?
答案 0 :(得分:1)
似乎您必须为方法调用设置正确的上下文。您可以查看jQuery proxy()方法,该方法允许您为回调提供正确的上下文。
尝试这样的事情:
for(i = 0; i < toSubmit.length; i++) {
var ctx = {id: i};
$.post('doSomething.php',
{id: toSubmit[i]},
function(data) { /* Do something here */ },
'json')
.error( $.proxy(function() {
console.log(this.id + " didn't work!");
}, ctx) );
}
答案 1 :(得分:1)
试试这个:
beforeSend:function(jqXHR, settings){
jqXHR.parameters = { /* data or parameters store here*/}
}
error: function(jqXHR, textStatus, errorThrown){
var params = jqXHR.parameters
}