gpt4 book ai didi

javascript - 如何在循环内将变量传递给 ajax.done() ?

转载 作者:行者123 更新时间:2023-12-02 23:17:51 25 4
gpt4 key购买 nike

我想将一个变量传递给循环内发生的 ajax 调用的 .done()。这是我的原始代码:

    <head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> </script>
</head>

<body>
<div class="list">
<div class="item" id="item1" data-user-id="1"></div>
<div class="item" id="item2" data-user-id="2"></div>
<div class="item" id="item3" data-user-id="3"></div>
<div class="item" id="item4" data-user-id="4"></div>
</div>
<script>
$('.list').children(".item").toArray().forEach(
item => {
$item = $(item)
$id = $item.data("userId")
$itemID = $item.attr('id')
$.ajax({
url: "https://jsonplaceholder.typicode.com/users",
data: { "id": $id },
}).done(res => {
console.log($itemID)
});
}
);
</script>
</body>
    item4
item4
item4
item4

当我期望看到(以任何顺序)时:

    item1
item2
item3
item4

我找到了Passing variables to $.ajax().done()但这两种解决方案都不起作用:

第一个使用立即调用函数表达式:

    .done(
((result) => {
console.log(result)
console.log($itemID)
})(res)
);
    ReferenceError: res is not defined

第二个使用自定义 ajax 参数:

    $.ajax({
url: "https://jsonplaceholder.typicode.com/users",
data: { "id": $id },
custom: $itemID
// same results with custom: { customID: $itemID }
}).done(res => {
console.log(res)
console.log(this.cutsom)
// same output with console.log($itemID)
// console.log(this.$itemID)
});
    item4
undefined
item4
undefined
item4
undefined
item4
undefined

我发现其他解决方案也不起作用(主要使用已弃用的 success 属性)。如果我错过了一个明显的答案,我很抱歉,我已经尽力了。

最佳答案

看起来像是范围问题。您需要将 $item$id$itemId 的范围限制为 foreach 函数。

var $item = $(item);
var $id = $item.data("userId");
var $itemID = $item.attr('id');

否则,在异步 ajax 函数完成时,$itemID = ... 的最后一次调用将保留您的最后一个 id

关于javascript - 如何在循环内将变量传递给 ajax.done() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57096230/

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