2012-05-03 2 views
0

jQuery.post()을 사용하여 xml 콘텐츠를 서버에서 풀다가 여러 줄의 목록에있는 for 루프에 넣으려고합니다. 문서 이름. 마지막 응답 만 연관 배열에 성공적으로 저장되고 다른 항목은 이 정의되지 않고으로 끝납니다.jQuery.post()를 사용하는 for 루프의 연관 배열은 마지막 항목 만 저장합니다.

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 

답변

3

콜백에 문제가 있습니다. 특히 비동기 작업이기 때문에 캡처 된 값은 항상 루프의 마지막 값입니다.

당신이 할 수 있어야 :

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