2009-02-04 6 views
20

안녕 모두,
xml 응답을 구문 분석하는 데 jQuery를 사용합니다.jQuery로 xml 응답 구문 분석

나는이 XML이 :

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

을 그리고 난 "CLIENT_ID"값을 얻을합니다.

답변

35

먼저 $ .get 또는 원하는 XML로 요청하십시오. 그런 다음 :

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

스마트! XML은 태그 언어입니다. –

37

잘 귀하의 요청에 XML에 예상되는 응답 데이터 형식을 수정하기는 dataType 매개 변수를 "XML"로 설정하십시오. 그렇지 않으면 jQuery는 응답 헤더를 사용하여 추측을한다.

그것은뿐만 아니라 $.get()$.post()에 같이 options 개체의 일부로 $.ajax() 기능에서 지원됩니다

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 요청을 더 멋지게 사용할 수 있습니다.

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

안전합니까? 당신은 jQuery로 응답 내용을 파싱하고 그것이 맞는지 아닌지에 대해 확신하지 못한다. –

+0

@Artem 응답'Content-Type :'헤더 유형이'text/xml'이라면 jQuery는 응답 데이터를 XML로 처리 할 것이다. 'application/json'이라고하면 jQuery는 응답을 JSON으로 처리합니다. 이것은 아주 잘 작동합니다. 나는 당신이 "안전하다"고 말하는 것이 확실하지 않습니다. – Tomalak

2

사용 무언가 :

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

그냥 내가 사용, 보완 $ 갔지 :

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

기능 doSomethingWithData (데이터) {

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


     var marker = $(this); 


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

}); 
여기

tpicall 사용 된 request.responseXML은이 경우의 데이터이며 작동하려면 $ (data)로 캡슐화해야합니다. (이것은 내가 머리를 약 3 시간 깨게한다) S

     // alert(markerh); 

       }