0

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

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
4

1 回答 1

3

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

你应该能够做到这一点:

(function(id, url)
{
    var idInternal = id;
    $.post(url, function(data)
    {
       pagedata[pagenames[idInternal]] = data;
    });
})(i, $xmlToGet);
于 2012-05-03T19:05:29.157 回答