jQuery.get (): попытка получить фид, но теги XML потеряны - PullRequest
2 голосов
/ 16 мая 2011

Я использую jQuery для автоматической загрузки самой последней записи в блоге.jQuery.get () переходит в RSS-канал блога и возвращает самое последнее сообщение:Вот что я использую:

$.get('http://url.to/feed', function(feed) {data = $(feed).find('item:first').text(); $('#testbox').html(data);}, 'xml');

Вот проблема: это выплевывает только текст из канала и элементы HTML.Все такие вещи, как <title>Title</title просто разделены до Title.Мне нужно сохранить все эти элементы XML без изменений, чтобы я мог правильно оформлять вещи.

Я также пробовал .html() вместо .text(), но это не работает.Использование ни того, ни другого также не работает (т. Е. data = $(feed).find('item:first');).

Как я могу загрузить и отобразить раздел RSS-канала и не удалять теги XML? Спасибо!

Ответы [ 4 ]

2 голосов
/ 16 мая 2011

Гул ... Посмотрите, не может ли ваш контент просто обернуться <![CDATA[ и скопировать.См. этот ответ (я знаю, злоупотребление CDATA и все такое, но OP вообще не хочет анализировать XML, просто добавляет его непосредственно в DOM).

Обновление: Что на самом деле сработало

Измените ваш вызов на метод get, чтобы он интерпретировал ответ как чистый текст и позволил JQuery создать дерево DOM для вас.Посмотрите здесь .

2 голосов
/ 16 мая 2011

Если вы добавите его, он будет работать.

$(feed).find('item:first > *').appendTo('#testbox');
1 голос
/ 16 мая 2011

Попробуйте вернуть узел, а не текст ...

$.get('http://url.to/feed', function(feed) {
    data = $(feed).find('item:first'); 
    $('#testbox').html(data);
}, 'xml');
0 голосов
/ 16 мая 2011

Как насчет того, чтобы попробовать что-то подобное (у меня это сработало) ...

Создайте файл PHP (get_xml.php) со следующим:

$xml = file_get_contents($_GET['url']);
header("Content-Type: text/xml");          
echo $xml;

Затем используйте следующий jQuery:

$.get("get_xml.php",{url:'http://url.to/feed/'}, function(data){
    var data = $(data).find('item:first');
    $('#testbox').html(data);
});
...