关闭不使用Ajax

时间:2014-07-10 10:05:06

标签: jquery ajax closures

我使用带有闭包的循环ajax调用但是不保留变量的值。它取最后一次迭代的值。

for(int i = 0; i < data.length; i++) {
    createElement(data[i], otherdata[i]);
}

function createElement(d,od){
    d.success = function(r) { console.log(od) };
    $.ajax(d);
}

让我们说otherdata= [1,2,3]。日志将显示&#39; 3&#39;三次 任何想法为什么会发生这种情况

2 个答案:

答案 0 :(得分:0)

javascript中没有类型,在循环中使用var而不是int,并修复语法错误。

for(var i=0; i<data.length;i++){
    createElement(data[i],otherdata[i]);
}

答案 1 :(得分:0)

您的代码应如下所示使用VAR代替Int 因为Javascript不知道这一点,而且没有冒号(:)你必须使用分号代替(;)

 var data = [
    {},
    {},
    {}
];

var otherdata = [
    1,
    2,
    3
]

for (var i = 0; i < data.length; i++) {
    createElement(data[i], otherdata[i]);
}


function createElement(d, od) {

    d.success = function (r) {
    alert(od);

    };

    d.url = '/echo/json/';

    $.ajax(d);

}

以上代码非常完美, 希望这会有所帮助...