Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问post请求';s success/complete/error函数中的参数数据_Javascript_Ajax_Jquery - Fatal编程技术网

Javascript 访问post请求';s success/complete/error函数中的参数数据

Javascript 访问post请求';s success/complete/error函数中的参数数据,javascript,ajax,jquery,Javascript,Ajax,Jquery,我有一堆jQueryAjax post请求,它们被封装在for循环中。每个请求都提供不同的参数。我的问题是,如果请求失败,您如何判断该请求传递了哪些参数数据 当我尝试时: for(i = 0; i < toSubmit.length; i++) { $.post('doSomething.php', {id: toSubmit[i]}, function(data) { /* Do something here */ }, 'jso

我有一堆jQueryAjax post请求,它们被封装在
for
循环中。每个请求都提供不同的参数。我的问题是,如果请求失败,您如何判断该请求传递了哪些参数数据

当我尝试时:

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!");
  });
}
for(i=0;i
error
函数将只输出
toSubmit
中的最后一个值,因为
i
指针一直在
for
循环中前进,而请求是异步触发的。”。在
success
complete
功能中也会发生同样的情况;我解决这个问题的方法是确保返回的JSON包含相应的
id
;但是如果请求失败,我将无法使用此解决方法


我有没有办法获取这些信息,或者有没有更好的方法来触发这些请求?

看来您必须为方法调用设置正确的上下文。您可以研究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) );
}​
for(i=0;i
试试这个:

beforeSend:function(jqXHR, settings){
   jqXHR.parameters = { /* data or parameters store here*/}
}


error: function(jqXHR, textStatus, errorThrown){
   var params = jqXHR.parameters
}