我有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`
答案 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);
}