Jquery ui 无法通过循环获取ajax成功函数中的数组元素
上面的代码按照我的预期运行,但是是硬编码的。因此,我使用下面的代码通过for循环执行相同的操作 但是,以下代码中几乎没有问题: 使用console.logkeyval1时,结果是data1_未定义 keyVal1=数据[0],此处日期[0]的值未传递给keyVal1。 有人知道错误在哪里吗?非常感谢Jquery ui 无法通过循环获取ajax成功函数中的数组元素,jquery-ui,jquery,Jquery Ui,Jquery,上面的代码按照我的预期运行,但是是硬编码的。因此,我使用下面的代码通过for循环执行相同的操作 但是,以下代码中几乎没有问题: 使用console.logkeyval1时,结果是data1_未定义 keyVal1=数据[0],此处日期[0]的值未传递给keyVal1。 有人知道错误在哪里吗?非常感谢 $("#placeholder").bind("plotselected", function (event, ranges) { var ke
$("#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];
}
});
}
Ajax成功处理程序:
keyVal1 = {};
keyVal2 = {};
然后按如下方式检索您的值:
keyVal1['data1_1']您需要在循环中有闭包,否则在AJAX请求成功时调用的函数将在完成后从for循环继承i的值 试试这个:
success: function(data) {
keyVal1['data1_' + keysArr[value]] = data[0];
keyVal2['data2_' + keysArr[value]] = data[1];
}
您可以在下面的博客中阅读更多关于for循环中闭包的内容>您是否检查了成功回调中的i变量?我打赌这是你意想不到的。谢谢@rohk,我已经用你的解决方案解决了第一个问题。然而,第二个问题仍然不起作用。再次感谢,@rohk!该代码仅在变量名称为data1_1或data2_1时有效。因此,keyVal1['data1_1']不能是变量名。嗨@rohk,我已经通过使用eval'data1_'+keysArr[value]+'=data[0]'找到了解决方案,它工作得非常完美。
success: function(data) {
keyVal1['data1_' + keysArr[value]] = data[0];
keyVal2['data2_' + keysArr[value]] = data[1];
}
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);
}