我已经尝试解决此问题2天了。但是事情似乎并不适合我。
我附加的代码在循环外部运行良好,但是当我在循环内部使用它时,它根本无法按我想要的方式工作并将空数组记录到控制台中。
另一方面,在我的ajax请求中使用“ async:false”会使代码正常工作,并在控制台中完全正常地输出数组,但是如您所知,不建议使用“ async:false”并完全冻结UI,直到没有请求完成。
还有其他解决方案,而不是将async设置为false?
for (var i = 0; i <= splittedURLSLength; i++) {
var extracted = extractUsername(splittedURLS[i]);
postData = {'name' : extracted};
ajaxRequest = $.when( $.ajax({
url: "/check",
type: "POST",
data: postData
})).then(function(returnedResponse) {
if (returnedResponse == "1") {
resultsArray.push(extracted);
}
});
}
console.log(resultsArray);
最佳答案
只是解决这个问题的另一个主意...
var resultsArray[]//Global or should be pass to the function...
myIterate(0);
function myIterate(idx){
var i = idx;
if (i < splittedURLS.length){
var extracted = extractUsername(splittedURLS[i]);
postData = {'name' : extracted};
ajaxRequest = $.when( $.ajax({
url: "/check",
type: "POST",
data: postData
})).then(function(returnedResponse) {
if (returnedResponse == "1") {
resultsArray.push(extracted);
myiterate(i++);
}
});
}
}
console.log(resultsArray);
关于javascript - jQuery Ajax-不在循环内工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35848088/