Извлечение CDATA с использованием jQuery - PullRequest
1 голос
/ 31 марта 2010

Похоже, об этом уже спрашивали, но ответы, похоже, не работают для меня. Я выводлю информацию из локального файла XML, но элементы описания не выводятся, потому что она заключена в CDATA - если я удаляю часть CDATA, тогда все работает нормально.

Вот мой код:

$(document).ready(
  function() {
    $.get('test.xml',
      function($info) {
        objInfo = $($info);

        objInfo.find('item').slice(0,5).each(
          function() {
            var Guid = $(this).find('guid').text();
            var Title = $(this).find('title').text();
            var Description = $(this).find('description').text();
            $('#Content').append(
              "<p><a href='" + Guid + "'>" + 
              Title + "</a>&nbsp;" +
              Description +
              "</p>"
            )
          }
        );

      },
      'xml'
    );
  }
)

Любая идея, как я могу успешно извлечь описание, которое обернуто в CDATA?

Спасибо -

1010 * джордж *

1 Ответ

0 голосов
/ 17 июня 2010

Последние несколько часов я потратил на что-то очень похожее, и для меня сработало явное задание типа контента «text / xml» и «xml» на отправляющей / получающей сторонах. То есть,

Серверная сторона:

...
response.setContentType("text/xml");
...

Клиент / JQuery сторона:

... 
$.ajax({
  type: 'POST',
  url: 'myAjaxHandler',
  processData: false,
  data: message,
  contentType: 'text/xml', 
  dataType: 'xml',
  success: function(xml, textStatus) {
   var myVar= $(xml).find('interestingNode').text();
   $('#someId').append(myVar); 
  },
  error: function(xhr, textStatus, errorThrown) {
   ...
  }
 });

...

Не уверен, что оба требуются.

Из документации, если вы нигде не указали тип контента, jQuery попытается «угадать», что вы отправляете, и в моем случае у меня был HTML, встроенный в CDATA.

...