разобрать xml ответ с помощью jQuery - PullRequest
22 голосов
/ 04 февраля 2009

Привет всем,
Я использую jQuery для анализа моих xml-ответов.

У меня есть этот xml:

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

И я хочу получить значение «client_id».

Ответы [ 4 ]

39 голосов
/ 04 февраля 2009

Чтобы исправить ожидаемый тип данных ответа на 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);
});
37 голосов
/ 04 февраля 2009

Сначала сделайте запрос на XML с помощью $ .get или как хотите. Тогда:

clientID = $(myXML).find("client_id").text();
2 голосов
/ 30 апреля 2009

просто для дополнения, если вы используете $ .get:

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

функция doSomethingWithData (data) {

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


        var marker = $(this);


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

 });

здесь tpicall использовал request.responseXML - это данные в этом случае, и вы должны инкапсулировать их в $ (data), чтобы работать (это заставляет меня ломать голову около 3 часов; S)

                     //    alert(markerh);

                }
2 голосов
/ 04 февраля 2009

Используйте что-то вроде этого:

$.ajax({ type: 'GET', url: 'test.xml', dataType: 'xml', success: function(xml){
            $('response', xml).each(function() {alert($(this).find('client_id').text());});         
            }});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...