2009-02-04 25 views
20

Herkese açık,
xml yanıtları ayrıştırmak için jQuery kullanıyorum.jQuery ile ayrıştırma xml yanıtı

Bu xml var:

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

Ve "client_id" değerini almak istiyorum.

cevap

35

İlk olarak, XML için $ .get ile veya istediğiniz şekilde bir istekte bulunun. Sonra :

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

Smart! XML bir etiket dilidir .. yup! –

37

sağ Talebinizdeki XML beklenen tepki veri türünü saptamak için, dataType parametresini "xml" olarak ayarlayın. Eğer yapmazsanız, jQuery bir tahminde bulunmak için yanıt başlıklarını kullanır.

O da $.get() ve $.post() olduğu gibi, options nesnenin bir parçası olarak $.ajax() işlevi desteklenir:

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

Yani yapabilirsiniz:

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

Not jQuery 1.5'den itibaren yukarıdaki Ajax isteğinin daha güzel bir sürümünü kullanabilirsiniz:

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

Bu güvenli midir? Yanıt içeriğini jQuery ile ayrıştırıyorsunuz ve doğru olup olmadığını bilmiyorsunuz. –

+0

@Artem 'İçerik Türü: 'başlık türü yanıtı' text/xml 'ise, jQuery yanıt verilerini XML olarak ele alacaktır. Eğer 'application/json' yazıyorsa, jQuery cevabı JSON olarak ele alacaktır. Bu çok iyi çalışıyor. "Güvenli" ile ne demek istediğinden emin değilim. – Tomalak

2

Kullanım şey:

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

sadece seni kullanmak, tamamlayacak $ .get:

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

fonksiyonu doSomethingWithData (veri) {

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


     var marker = $(this); 


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

}); 
burada

tpicall kullanılmış request.responseXML bu durumda veridir ve çalışmak için $ (data) içinde saklamanız gerekir (Bu beni yaklaşık 3 saat kırıyor; S)

     // alert(markerh); 

       }