jQuery中Ajax的全局变量问题

时间:2016-12-30 14:58:48

标签: javascript jquery ajax

我有8个相同的功能,利用Postman编辑的AJAX调用和编辑html元素。为了真正简化我的代码,我试图在一个LOOP中进行所有8个邮递员调用。看起来这些调用没有问题,但我的全局数组没有传入$ .ajax调用,使我无法实际使用每次调用的响应。

如果我需要分别拨打所有电话,那就是我需要做的事情,但是在我放弃之前想要在这里查看。

var x1 = [postman headers]
var x2 = [html selectors]
//Master for loop
var main = function(){
  for (var i = 0; i < x1.length; i++){
    var x3 = [url identifiers];
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "my_url"+x3[i], //works without issue
      "method": "GET",
      "headers": {
        "authorization": "Basic x",
        "cache-control": "no-cache",
        "postman-token": x1[i] //works without issue
      }
    }
    $.ajax(settings).done(function loadData (response) {
      var myData = response[x3[i]]; //is undefined console errors on this line
      $(x2).html(myData); //is undefined console will error on this line as well
      console.log(myData);
    });
  } // End FOR loop
} // End function`

1 个答案:

答案 0 :(得分:0)

这是一个范围问题:

start ajax call
loop goes on i is increased
ajax finished but i isnt at the right position

您需要创建一个闭包:

for(i=0;i<length;i++){
 (function(i){
   //your code
 })(i);
 }