gpt4 book ai didi

javascript - 使用 jQuery.post() 的 for 循环中的关联数组导致仅存储最后一个条目

转载 作者:行者123 更新时间:2023-11-28 21:03:31 25 4
gpt4 key购买 nike

我正在尝试在多个文档名称列表的 for 循环中使用 jQuery.post() 从服务器中提取 xml 内容。只有最后一个响应成功存储在关联数组中,而其他条目最终未定义

var pagedata  = new Array () ;

loadpagexml = function ( liststring ) {
var pagenames = liststring.split(',') ;

for ( var i in pagenames ){
xmltoget = pagenames[i]+'.xml' ;
$.post( xmltoget , function(data) {
pagedata[ pagenames[i] ] = data ;
}) ;
}
}

var listofpages = 'poo,dung,corn' ;
loadpagexml ( listofpages )

>pagedata['poo']
undefined
>pagedata['dung']
undefined
>pagedata['corn']
#document

最佳答案

您的回调遇到了闭包问题,因此捕获的值始终是循环中的最后一个值,特别是因为这是一项异步操作。

你应该能够做到这一点:

(function(id, url)
{
var idInternal = id;
$.post(url, function(data)
{
pagedata[pagenames[idInternal]] = data;
});
})(i, $xmlToGet);

关于javascript - 使用 jQuery.post() 的 for 循环中的关联数组导致仅存储最后一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437720/

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