我在另一个内部有2个ajax请求。我想使用第二个中的第一个数据结果(如下所示)。我的问题是我得到undefined
,因为索引在第二个ajax中已经增加了。我想知道如何获得未递增的z
的索引或值,以便我可以在第二个ajax中使用。我使用的解决方案是将所有请求放在ajax的.done()
中,但它没有解决。
欢迎任何更清洁的解决方案。
任何建议都表示赞赏。
$.ajax({
type: 'POST',
url: 'php1.php',
dataType: "json",
data: {
id: id
},
success: function(data) {
}
}).done(function(data) {
for (var z = 0; z < data.length; z++) {
var tdata = [];
console.log(z); //value is 0
tdata[z] = data[z];
$.ajax({
type: 'POST',
url: 'php2.php',
dataType: "json",
data: {
id: tdata[z].id //working
},
success: function(data) {
console.log(z); //value is 1
}
}).done(function(data) {
console.log(tdata);
console.log(z); // value is 1 should be 0
console.log(tdata[z].id); // id undifined because index is more than 1
});
}
});
答案 0 :(得分:0)
试试这个:
$.ajax({
type: 'POST',
url: 'php1.php',
dataType: "json",
data: {
id: id
},
success: function(data) {
}
}).done(function(data) {
for (var z = 0; z < data.length; z++) {
var tdata = [];
console.log(z); //value is 0
tdata[z] = data[z];
$.ajax({
type: 'POST',
url: 'php2.php',
dataType: "json",
data: {
id: tdata[z].id //working
},
success: function(tdata) {
console.log(z); //value is 1
}
}).done(function(tdata) {
console.log(tdata);
console.log(z); // value is 1 should be 0
console.log(tdata[z].id); // id undifined because index is more than 1
});
}
});
答案 1 :(得分:0)
您应该使用闭包为z的每个值创建单独的ajax请求 并确保将返回的json转换为数组(数据)
grid.on("KeyUp", function (e) {
if (e.key === "Tab") {
console.log("Navigate to next cell");
}
});
答案 2 :(得分:0)
这可能是由于同步,下面的代码和检查。 async:false,
$.ajax({
type: 'POST',
url: 'php2.php',
dataType: "json",
async: false,
data: {
id: tdata[z].id //working
},
success: function(tdata) {
console.log(z); //value is 1
}
})