javascript – AJAX / getJSON中的jQuery范围或竞争条件

前端之家收集整理的这篇文章主要介绍了javascript – AJAX / getJSON中的jQuery范围或竞争条件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一块jQuery代码快速调用几个get JSON()调用
var table = $("table#output");
for (var i in items) {
    var thisItem = items[i];
    $.getJSON("myService",{ "itemID": thisItem },function(json) {
        var str = "<tr>";
        str += "<td>" + thisItem + "</td>";
        str += "<td>" + json.someMember + "</td>";
        str += "</tr>";
        table.append(str);
    });
}

当我对一个滞后的服务器运行这个表时,表格中填满了预期的json.someMember值(它们按顺序排列:我不介意),但是thisItem列填充有来自各种迭代的值的不可预测的混合.

我假设这是与范围和时间有关的 – 回调函数从更广泛的范围读取thisItem?我对吗?如何防止这种情况?

我目前的解决方法是让JSON服务返回其输入的副本 – 这至少不足以说明.

解决方法

看起来像一个范围界定问题由于循环.尝试这个:
var table = $("table#output");
for (var i in items) {
    var thisItem = items[i];
    $.getJSON("myService",(function(thisItem) {
        return function(json) {
            var str = "<tr>";
            str += "<td>" + thisItem + "</td>";
            str += "<td>" + json.someMember + "</td>";
            str += "</tr>";
            table.append(str);
        }
    })(thisItem));
}

编辑:所有我做的是范围thisItem到$.getJSON回调.

原文链接:https://www.f2er.com/ajax/151961.html

猜你在找的Ajax相关文章