gpt4 book ai didi

javascript - 保存ajax调用的id以在返回函数中使用它

转载 作者:行者123 更新时间:2023-11-28 16:36:06 26 4
gpt4 key购买 nike

我有这个代码来填充我的选择框中的选项(我在这个页面中有 7 个选择框),并使用来自服务器的 json 响应(ajax)

for (j=1; j <= 7; j++){

$.getJSON('mobile_json.php', {id:j}, function(data) {
var select = $('#userAccess' + j);
var options = select.attr('options');
$.each(data, function(index, array) {
options[array['Id']] = new Option(array['Name']);
});
});
}

问题是在调用ajax之后, j 等于 8 ,我想要的是当函数处理 json 数组时,将其设置为右侧选择框,例如: userAccess1 , userAccess2 ... userAccess7,

我该如何处理?

最佳答案

这是因为您正在循环中创建闭包。 This helped me to understand it better (尤其是示例 5)。

解决这个问题的一种方法是创建一个匿名函数并立即执行它:

for (j=1; j <= 7; j++){
(function(index) {
$.getJSON('mobile_json.php', {id:index}, function(data) {
var select = $('#userAccess' + index);
var options = select.attr('options');
$.each(data, function(index, array) {
options[array['Id']] = new Option(array['Name']);
});
});
})(j)
}

这“捕获”了j的当前值。如果不这样做,则在执行闭包(Ajax 请求的回调函数)时,循环已完成,j 的值为 8.
这就是闭包的棘手之处:)

关于javascript - 保存ajax调用的id以在返回函数中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3952293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com