2009-02-04 18 views
20

HI all,
Io uso jQuery per analizzare le mie risposte xml.parse risposta xml con jQuery

ho questo xml:

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

e voglio ottenere il valore "client_id".

risposta

35

Innanzitutto, effettuare una richiesta per XML con $ .get o come si desidera. Poi:

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

Smart! XML è un linguaggio di tag .. yup! –

37

Per definire il tipo di dati risposta attesa a XML destra nella vostra richiesta, impostare il parametro dataType su "xml". In caso contrario, jQuery utilizza le intestazioni di risposta per indovinare.

E 'supportato sulla funzione $.ajax() come parte dell'oggetto options, così come sulla $.get() e $.post():

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

Così si potrebbe fare questo:

$.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 a partire da jQuery 1.5 è possibile utilizzare una versione più carina della richiesta Ajax di cui sopra:

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

È sicuro? Analizzi il contenuto della risposta da jQuery e non sei sicuro se sia corretto o meno. –

+0

@Artem Se il tipo di intestazione 'Content-Type:' dice 'text/xml', quindi jQuery tratterà i dati di risposta come XML. Se dice 'application/json', jQuery tratterà la risposta come JSON. Funziona molto bene Non sono sicuro di cosa intendi per "sicuro". – Tomalak

2

usare qualcosa di simile a questo:

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

solo per integrare, ti ho uso $ .get:

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

funzione doSomethingWithData (dati) {

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


     var marker = $(this); 


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

}); 

qui tpicall usato request.responseXML è il dato in questo caso, e devi incapsularlo in $ (dati) per funzionare (questo mi fa spezzare la testa circa 3 ore; S)

     // alert(markerh); 

       }