2009-02-04 151 views
20

HI all,
我使用jQuery來解析我的xml響應。使用jQuery解析xml響應

我有這樣的XML:

<?xml version="1.0" encoding="UTF-8"?> 
<response status="ok"> 
    <client_id>185</client_id> 
</response> 

,我希望得到 「的client_id」 值。

回答

35

首先,使用$ .get或者您想要的方式請求XML。 然後:

clientID = $(myXML).find("client_id").text(); 
+0

聰明! XML是一種標籤語言。 – 2016-03-31 08:59:10

37

要解決預期的響應數據類型爲XML就在您的要求,設置dataType參數設置爲「XML」。如果你不這樣做,jQuery會使用響應頭文件進行猜測。

它支撐在$.ajax()函數爲options對象的一部分,以及對$.get()$.post()

jQuery.ajax(options) 
jQuery.get(url, data, callback, type) 
jQuery.post(url, data, callback, type) 

所以,你可以這樣做:

$.ajax({ 
    type: 'GET', 
    url: "foo.aspx", 
    data: { 
    key: "value" 
    }, 
    dataType: "xml", 
    success: function (xml){ 
    var clientid = $(xml).find('client_id').first().text(); 
    alert(clientid); 
    } 
}); 

注從jQuery 1.5開始,您可以使用上述Ajax請求的更好版本:

$.get("foo.aspx", { 
    key: "value" 
}) 
.done(function (xml){ 
    var clientid = $(xml).find('client_id').first().text(); 
    alert(clientid); 
}); 
+0

安全嗎?你用jQuery解析響應內容,你不確定它是否正確。 – 2012-08-21 12:26:47

2

使用這樣的事情:

$.ajax({ type: 'GET', url: 'test.xml', dataType: 'xml', success: function(xml){ 
      $('response', xml).each(function() {alert($(this).find('client_id').text());});   
      }}); 
2

只是補充,我使用$不用彷徨:

$.get($('file.xml').val(),{ } , doSomethingWithData); 

功能doSomethingWithData(數據){

$(data).find("marker").each(function() { 


     var marker = $(this); 


    alert(marker.attr("lat")); 

}); 

這裏tpicall在這種情況下使用request.responseXML是數據,並且您必須將其封裝在$(data)中才能工作(這讓我頭腦破了約3小時; S)

     // alert(markerh); 

       }