$("#placeholder").bind("plotselected", function (event, ranges) {
var keysArr = [1, 6, 8];
for (var i = 0; i < keysArr.length; ++i){
$.ajax({
type:"post",
dataType:"json",
data:{"minVal":ranges.xaxis.from, "maxVal":ranges.xaxis.to, "sid":keysArr[i]},
url:"getDataByZoom.php",
cache: false,
success: function(data) {
data1_1 = data[0];
data2_1 = data[1];
data1_6 = data[0];
data2_6 = data[1];
data1_8 = data[0];
data2_8 = data[1];
}
});
}
上面的代码按照我的预期运行但是硬编码。因此,我使用下面的代码通过for循环执行相同的操作。
但是,以下代码中几乎没有问题:
有没有知道错误在哪里?谢谢你!
$("#placeholder").bind("plotselected", function (event, ranges) {
var keysArr = [1, 6, 8];
for (var i = 0; i < keysArr.length; ++i){
$.ajax({
type:"post",
dataType:"json",
data:{"minVal":ranges.xaxis.from, "maxVal":ranges.xaxis.to, "sid":keysArr[i]},
url:"getDataByZoom.php",
cache: false,
success: function(data) {
keyVal1 = 'data1_' + keysArr[i];
keyVal2 = 'data2_' + keysArr[i];
keyVal1 = data[0];
keyVal2 = data[1];
}
});
}
答案 0 :(得分:0)
你的for循环没有关闭...试试这个:
for (var i = 0; i < keysArr.length; ++i){
(function(value) {
$.ajax({
type:"post",
dataType:"json",
data:{"minVal":ranges.xaxis.from, "maxVal":ranges.xaxis.to, "sid":keysArr[value]},
url:"getDataByZoom.php",
cache: false,
success: function(data) {
keyVal1 = 'data1_' + keysArr[value];
keyVal2 = 'data2_' + keysArr[value];
keyVal1 = data[0];
keyVal2 = data[1];
}
});
})(i);
}
修改:你想用keyVal1做什么?使用此代码,您将覆盖循环的每次迭代的旧值。你为什么不使用像这样的对象
keyVal1&amp;的初始化keyVal2:
keyVal1 = {};
keyVal2 = {};
Ajax成功处理程序:
success: function(data) {
keyVal1['data1_' + keysArr[value]] = data[0];
keyVal2['data2_' + keysArr[value]] = data[1];
}
然后你像这样检索你的价值: keyVal1 [ 'data1_1']
答案 1 :(得分:0)
你需要在循环中有闭包,否则你调用AJAX请求成功的函数将在i
循环完成后继承for
的值。
试试这个:
for(var i = 0; i < keysArr.length; ++i) {
(function(value) {
$.ajax({
type:"post",
dataType:"json",
data:{"minVal":ranges.xaxis.from, "maxVal":ranges.xaxis.to, "sid":keysArr[value]},
url:"getDataByZoom.php",
cache: false,
success: function(data) {
keyVal1 = 'data1_' + keysArr[value];
keyVal2 = 'data2_' + keysArr[value];
keyVal1 = data[0];
keyVal2 = data[1];
}
});
}) (i);
}
您可以在以下Blog&gt;中详细了解for循环中的闭包。 http://www.mennovanslooten.nl/blog/post/62