Получение RSS-ленты с JQuery и AJAX - PullRequest
0 голосов
/ 20 октября 2011

Я нашел этот сайт , который позволяет конвертировать RSS-каналы в json. Он также предоставляет способ указать обратный вызов, поэтому я думаю, что пользователи могут делать вызовы jsonp в этот веб-сервис. Тем не менее, я пробовал разные способы сделать это, но ни один не работал. Вот мой код:

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: 'http://www.blastcasta.com/feed-to-json.aspx',
        dataType: "jsonp",
        jsonpCallback: "loadRSS",
        data: {
            feedUrl: 'http://xml.corriereobjects.it/rss/homepage.xml',
            param: "callback"
        },
        success: function (data) {
           var list = "";
           for (var propertyName in data) {
                list+=data[propertyName];
            }
            console.log(list);
        },
        error: function(xhr, ajaxOptions, thrownError){
            alert(ajaxOptions)
        }
    });
});

Что бы я ни пытался, обработчик успеха не выполняется. Вместо этого я получаю обработчик ошибок. Я попытался с jsonpCallbak: "обратный вызов", jsonpCallback: "?", Param: "обратный вызов" и другие значения, но безуспешно Я должен использовать ТОЛЬКО javascript без поддержки любого языка сценариев на стороне сервера (без aps, без php и т. Д.) У кого-нибудь этот сервис работал на его сайте? Любое предложение будет очень признателен!

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Я считаю, что JQuery JSON API не подходит для такого ответа JSON, который предоставляет службу BlastCasta. Он назначает JSON пользовательской переменной, указанной в URL, и не использует функциональность обратного вызова, с которой работает JSONP. Например, этот URL: http://www.blastcasta.com/feed-to-json.aspx?feedUrl=http%3A//xml.corriereobjects.it/rss/homepage.xml&param=rssFeed вернет следующий ответ:

rssFeed = { "rss": { "channel": /*...*/}}

Итак, можно использовать технику внедрения скрипта:

/* URL of the BlastCasta service and his parameters:
  feedUrl :== escaped URL of interest (RSS Feed service)
  param   :== javascript variable name which will receive parsed JSON object */
var url = "http://www.blastcasta.com/feed-to-json.aspx"
  +"?feedUrl=http%3A//xml.corriereobjects.it/rss/homepage.xml"
  +"&param=rssFeed";

/* since the service declares variable without var keyword,
   hence in global scope, lets make variable usage via window object;
   although you can write param=var%20rssFeed" in the URL :) */
window.rssFeed = null;

$.getScript(url, function() {
  /* script is loaded, evaluated and variable is ready to use */
  console.dir(window.rssFeed);

  /* some feeds are huge, so free the memory */
  window.rssFeed = null;
});
1 голос
/ 20 октября 2011

Обновление:

вот пример, который работает для вашего кода:

$.getJSON("http://www.blastcasta.com/feed-to-json.aspx?feedUrl=http://xml.corriereobjects.it/rss/homepage.xml&param=?", function(data) {
    console.dir(data);
});

проблема в том, что я получаю некоторые ошибки javascript с возвратом json:

смотри jsfiddle

...