2010-01-28 2 views
0

Возможно ли подключиться к RSS-каналу, получить XML-объект, затем разобрать и отобразить его на стороне клиента javascript/AJAX?обрабатывать RSS-каналы с помощью AJAX и только javascript

Спасибо,

+0

Есть ли конкретная причина, почему все это должно быть на стороне клиента? Часть Javascript может легко вызвать скрипт на сервере для выполнения этой работы, а затем передать результаты в часть Javascript. –

+0

Я предпочитаю делать все это на стороне клиента для отладки без развертывания на сервере – test

+0

http://stackoverflow.com/questions/226663/parse-rss-with-jquery –

ответ

0

При условии Same Origin Policy, да. http://www.xml.com/lpt/a/1672 имеет пример (хотя, честно говоря, код не очень хорош, вы запускаете глобальные переменные в первой функции).

+0

Таким образом, это эффективно сможет потреблять фид ТОЛЬКО на тот же домен? – test

+0

В стандартном контексте безопасности - да. Конечно, вы можете прокси-серверы через свой собственный сервер. – Quentin

+0

@Dhaivat - в вопросе не упоминается Phonegap. Вы путаете этот вопрос с [полностью отдельным, который вы задали] (http://stackoverflow.com/questions/6483804/phonegap-rss-feeds-javascript) ?! – Quentin

0

Технически это возможно.

Однако, существуют некоторые ограничения на стороне браузера: AJAX запросов (XHR/XMLHttpRequest) может быть сделано только на том же домене, на котором размещен яваскрипта скрипт (ы).

Это означает, что сценарий, размещенный на http://example.com/, не может выполнять XHR на http://domain.com/.

Вы можете перепускной это ограничение с помощью прокси- скрипт на стороне сервера. Например: http://example.com/getFeed.php?feed=the_complete_url_of_the_targeted_feed

0

Да, конечно возможно. Реальный пример следующим образом:

<div id='tagged'></div> 

<script type="text/javascript"> 

$.get('http://stackoverflow.com/feeds/user/40986', function(data){ 
    $(data).find('entry').each(function(){ 
     var $rssLink = $('<a></a>') 
      .attr('href', $(this).find('link').attr('href')) 
      .append($(this).find('id').text()); 
     var $divContainer = $('<div></div>'); 
     $rssLink.appendTo($divContainer); 
     $divContainer.appendTo('#tagged'); 
    }); 
}); 

</script> 

Использование JQuery я получаю свой собственный StackOverflow RSS-канал и распечатать ссылку на каждую запись.

+0

Я хотел бы получить больше объяснений, считая, что другие говорят, что это невозможно из-за правил XHR. Я копирую/вставляю ваш код на тестовый сайт только сейчас, изменяя URL-адрес и не получая результатов. – Ziggy