Javascript – parse xml response with jQuery

javascriptjqueryxml

HI all,
I use jQuery to parse my xml responses.

I have this xml :

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

And i want to get "client_id" value.

Best Solution

To fix the expected response data type to XML right in your request, set the dataType parameter to "xml". If you don't, jQuery uses the response headers to make a guess.

It is supported on the $.ajax() function as part of the options object, as well as on $.get() and $.post():

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

So you could do this:

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

Note that as of jQuery 1.5 you can use a nicer version of the above Ajax request:

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