我试图在多个文档名称列表上的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);