使用jquery和ajax获取rss

时间:2011-10-20 12:51:26

标签: javascript jquery ajax rss jsonp

我发现this site允许将RSS提要转换为json。 它还提供了一种指定回调的方法,因此我认为用户可以对此Web服务进行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:“callback”,jsonpCallback:“?”,param:“callback”和其他值也没有成功。 我必须使用只有javascript而不支持任何服务器端脚本语言(没有aps,没有php等) 有人在他的网站上使用此服务吗? 任何建议都会非常感激!

2 个答案:

答案 0 :(得分:3)

我发现jQuery JSON API不适合提供BlastCasta服务的这种JSON响应。它将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 :(得分:1)

<强>更新

这是一个适用于您的代码的示例:

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

问题是,我在返回json时出现了一些javascript错误:

请参阅此jsfiddle