2009-02-04 23 views
20

HI all,
Uso jQuery para analizar mis respuestas xml.analizar la respuesta xml con jQuery

tengo unas pocas cosas xml:

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

y quiero obtener el valor "client_id".

Respuesta

35

Primero, solicite el XML con $ .get o como quiera. Entonces :

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

Smart! XML es un lenguaje de etiquetas .. yup! –

37

para fijar el tipo de datos XML respuesta esperada a la derecha de su parte, establecer el parámetro para dataType "xml". Si no lo hace, jQuery usa los encabezados de respuesta para adivinar.

Es compatible con la función $.ajax() como parte del objeto options, así como en $.get() y $.post():

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

por lo que podría hacer esto:

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

Nota que a partir de jQuery 1.5 puede usar una versión más agradable de la solicitud Ajax anterior:

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

¿Esto es seguro? Analizas el contenido de respuesta de jQuery y no estás seguro de si es correcto o no. –

+0

@Artem Si el tipo de encabezado de respuesta 'Content-Type:' dice 'text/xml', entonces jQuery tratará los datos de respuesta como XML. Si dice 'application/json', jQuery tratará la respuesta como JSON. Esto funciona muy bien No estoy seguro de lo que quiere decir con "seguro". – Tomalak

2

usar algo como esto:

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

simplemente para complementar, te utilizo $ .get:

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

función doSomethingWithData (datos) {

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


     var marker = $(this); 


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

}); 

aquí tpicall request.responseXML es la información en este caso, y tiene que encapsularla en $ (datos) para poder trabajar (Esto me hace romper la cabeza alrededor de 3 horas; S)

     // alert(markerh); 

       } 
Cuestiones relacionadas