2009-08-12 2 views
2

Используя запрос Ajax POST в JQuery, я получаю следующий XML с сервера:Как проанализировать jQuery ответ ajax xml?

<?xml version="1.0"?> 
<data> 

    <subject> 
    <val1>...</val1> 
    <val2>...</val2> 
    <val3>...</val3> 
    </subject> 

    <subject> 
    <val1>...</val1> 
    <val2>...</val2> 
    <val3>...</val3> 
    </subject> 

    ... 

</data> 

XML-будет иметь произвольное количество <subject> тегов. Как я прокручиваю каждый тег объекта, захватывая данные в val1..val3 для соответствующего тега на каждой итерации? Благодарю.

ответ

2

Убедитесь, что ваш ответ сервер посылает "Content-Type" заголовок "text/xml". Тогда ответом будет проанализированный XML-документ. Обработчик успех имеет только то перебирать в результате DOM:

$.post(url, postData, function(xmlDoc) { 
    $('subject', xmlDoc).each(function() { 
     var val1 = $('val1', this).text(); 
     var val2 = $('val2', this).text(); 
     var val3 = $('val3', this).text(); 
    }) 
}); 
+0

Я пробовал это, и он работал для val #, который имел данные varchar из базы данных. Но тег val, у которого были данные типа текста (mySql), появился пустым, когда я попытался вскрыть $ ('val #', this) .text(); Любые идеи, почему это было бы? – oym

+0

@ es111: Мне нужно будет увидеть xml. Опубликовать обновление. –

+0

nevermind, я был глупым, для одного из тегов val # я фактически использовал , который, я думаю, почему он не взял значение. Просто изменив его на другое имя, работал. – oym

1

Использование методов DOM:

var subjects = xml.getElementsByTagName("subject"); 
for(i in subjects){ 
    alert(subjects[i].getElementByTagName("val1").textContent; 
    alert(subjects[i].getElementByTagName("val2").textContent; 
    alert(subjects[i].getElementByTagName("val3").textContent; 
} 
0

Я не могу найти синтаксис прямо сейчас, но вы можете запросить объект, используя селекторы так же, как вы делаете HTML, что-то вроде:

$.get('your/url', function(response) { 
    $(response).contents("subject"); // just like it's HTML 
}); 
Смежные вопросы