我使用带有闭包的循环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;三次
任何想法为什么会发生这种情况
答案 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);
}
以上代码非常完美, 希望这会有所帮助...