2014-01-22 78 views
1

我有2個Ajax調用。在變量中使用來自Ajax調用的名稱數組

第一個:產生一個計算機名稱列表。對於每個計算機名稱,我想在第二個Ajax調用中插入名稱變量。

$.ajax({ 
    type: "GET", 
    dataType: "xml", 
    async: false, 
    cache: false, 
    url: "https://server/computers/match/*", 
    contentType: "text/xml; charset=UTF-8", 
    success: xmlParser,  
});  
var data = '';  
function xmlParser(xml) { 
    $(xml).find("computer").each(function() {  
     data += $(this).find("name").text();     
    })  
} 

二Ajax調用:

var names = $(data).text().replace(/\s/g, "%20"); 
$.ajax({ 
    type: "GET", 
    dataType: "xml", 
    async: false, 
    cache: false, 
    url: "https://server/computers/name/" + names, 
    contentType: "text/xml; charset=UTF-8", 
    success: xmlParser3 

}); 
+0

AJAX是異步的。目前,您的第二個Ajax請求在第一個Ajax請求完成之前發生。此外,'data'是一個字符串,您不需要選擇它並獲取它的文本,只需將其用作字符串即可。 –

回答

0

只需添加您的每次循環函數中的回調:

$(xml).find("computer").each(function() { 
    data += $(this).find("name").text(); 
}, function() { 
    var names = $(data).text().replace(/\s/g, "%20"); 
    $.ajax({ 
     type: "GET", 
     dataType: "xml", 
     async: false, 
     cache: false, 
     url: "https://server/computers/name/" + names, 
     contentType: "text/xml; charset=UTF-8", 
     success: xmlParser3 
    }); 
}); 
+0

謝謝,刪除了數據+ =到data =並完美工作。 – user1938745

相關問題