在success / complete / error函数中访问post请求的参数数据

时间:2012-03-05 14:45:01

标签: javascript ajax jquery

我在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循环中前进,而请求是异步触发的。 successcomplete函数中也出现同样的情况;我的方法是确保返回的JSON包含相应的id;但如果请求失败,我就无法使用此解决方法。

有没有办法让我了解这些信息,还是有更好的方式解雇这些请求?

2 个答案:

答案 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
}