我发现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等) 有人在他的网站上使用此服务吗? 任何建议都会非常感激!
答案 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¶m=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"
+"¶m=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¶m=?", function(data) {
console.dir(data);
});
问题是,我在返回json时出现了一些javascript错误:
请参阅此jsfiddle