使用jQuery解析xml响应

问题描述:

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” 值。

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

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

聪明! XML是一种标签语言。 – 2016-03-31 08:59:10

要解决预期的响应数据类型为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

使用这样的事情:

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

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

$.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); 

       }