2012-07-30 20 views
0

這是我讀取「test.xml」的jquery代碼。如何獲取xml解析數據到jquery中的全局變量

var htmldata = 0; 
$.get('test.xml', function(data) { 
    xml_data = $(data); 
    xml_data.find("order").find("customer").each(function(k, v) { 
     divClass = inactiveClass; 
     spanClass = inactiveIcon; 
     htmldata += '<div class="' + divClass + '"><span class="' + inactiveIcon + '"></span>' + $(this).text() + '</div>'; 
    }); 
}); 
alert(htmldata); 

在這段代碼我試圖解析的test.xml並創建一個htmldata。但我沒有獲得這方面的數據。如果我試圖提醒它顯示爲空。我怎樣才能在外面看到這個價值?請幫幫我。

+1

我覺得alert(htmldata);將顯示0,因爲代碼執行不會等待請求[實際上從test.xml中檢索數據]完成。 – Nick 2012-07-30 06:50:47

+0

正如@OptimusPrime所說,你的ajax請求是異步的。將警報置於'$ .get'的函數回調中。 – 2012-07-30 06:51:49

+0

@OptimusPrime確實完全跳過了我。儘管昨天有一個問題。 – Adi 2012-07-30 06:52:18

回答

3
function parseXMLdata(data, callback) 
{  
    $.get('test.xml', function(data) { 
     xml_data = $(data); 
     xml_data.find("order").find("customer").each(function(k, v) { 
      divClass = inactiveClass; 
      spanClass = inactiveIcon; 
      var htmldata += '<div class="' + divClass + '"><span class="' + inactiveIcon + '"></span>' + $(this).text() + '</div>'; 

      callback(htmldata);  
     }); 
    }); 
} 

parseXMLdata(data, window.alert); 
+0

嗨如何將該警報值分配給一個變量 – learner 2012-07-30 11:29:51

+0

我需要像這樣 var stat = parseXMLdata(data,window.alert); – learner 2012-07-30 11:30:22

+0

不可能同步。你只能做parseXMLData(data,function(html){yourVariable = html});該任務將是異步的。 – 2012-07-30 12:14:19