我已经尝试解决此问题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/

10-09 16:08