парсинг простого XML с помощью jquery от asp.net webservice - PullRequest
4 голосов
/ 08 ноября 2010

Я на некоторое время ломаю голову над этим, и я понятия не имею, что я делаю неправильно. Сценарий следующий: я использую swfupload для загрузки файлов с помощью индикатора выполнения через веб-сервис. веб-сервис должен вернуть имя созданного эскиза. Все идет хорошо, и хотя я предпочитаю получать возвращаемые данные в формате json (может изменить их позже в js-файлах swfupload), стандартные данные xml тоже подойдут.

Таким образом, когда загрузка завершается, веб-служба возвращает следующий XML-код, как и ожидалось (обратите внимание, я удалил пространство имен в веб-службе):

<?xml version="1.0" encoding="utf-8"?>
<string>myfile.jpg</string>

Теперь я хочу проанализировать этот результат с помощью jquery и подумал, что это сделает следующее:

 var xml = response;
 alert($(xml).find("string").text());

Но я не могу получить строковое значение. Я пробовал много комбинаций (.html (), .innerhtml (), response.find ("string"). Text (), но ничего не получается. Это мой первый раз, когда я пытаюсь проанализировать xml через jquery, так что, возможно, Я делаю что-то по-настоящему неправильно. «Ответ» заполняется XML.

Я надеюсь, что кто-то может мне помочь с этим. Спасибо за ваше время.

С уважением, Mark

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

Я думаю, что $ (xml) ищет объект dom с селектором, который соответствует строковому значению XML, поэтому я думаю, он возвращается нулевым или пустым?

Первый плагин, упомянутый ниже xmldom выглядит довольно хорошо, но если ваш возвращенный XML действительно такой же простой, как и в приведенном выше примере, анализ строки может быть быстрее, например:

var start = xml.indexOf('<string>') + 8;
var end = xml.indexOf('</string>');
var resultstring = xml.substring(start, end);

Из этого ответа на этот вопрос: Как запросить строку XML через DOM в jQuery

Цитата:

Есть 2 способа подойти к этому.

  1. Преобразование строки XML в DOM, анализ ее с помощью этого плагина или следование этому учебнику
  2. Преобразование XML в JSON с помощью этого плагина .
0 голосов
/ 08 ноября 2010

jQuery не может разобрать XML. Если вы передаете строку, полную содержимого XML, в функцию $, она, как правило, пытается проанализировать ее как HTML, вместо этого используя стандартный innerHTML. Если вам действительно нужно проанализировать строку, полную XML, вам потребуются методы, специфичные для браузера и не поддерживаемые глобально, такие как new DOMParser и XMLDOM ActiveXObject, или плагин, который обертывает их.

Но вам почти никогда не нужно это делать, поскольку XMLHttpRequest должен возвращать полностью проанализированный XML DOM в свойстве responseXML. Если ваш веб-сервис правильно устанавливает заголовок ответа Content-Type, чтобы сообщить браузеру, что возвращается XML, то аргумент data для вашей функции обратного вызова должен быть объектом XML-документа, а не строкой. В этом случае вы сможете без проблем использовать свой пример с find() и text().

Если на стороне сервера не возвращается заголовок XML Content-Type и вы не можете это исправить, вы можете передать опцию type: 'xml' в настройках ajax в качестве переопределения.

...