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

07-24 16:18