我正在尝试让JSONP $.ajax
请求正常工作。它在Chrome和IE中运行良好,但在Firefox v30中失败了。
当它失败时它没有给出任何错误 - 至少Firebug没有显示任何错误,它只是从不调用回调函数。
这是一个基本的演示网站(http://andysylvester.com/files/reader/)可以与Chrome和IE一起使用,但不适用于Firefox。
nytRiver.js JSON调用实际上会向onGetRiverStream
返回一个javascript函数调用,请参阅此处的文档:http://riverjs.org/#structureOfRiverjs
<html>
<head>
<title>Minimal River.js Feed Reader</title>
<script src="http://fargo.io/code/jquery-1.9.1.min.js"></script>
<script>
var theRiver;
function onGetRiverStream (updatedFeeds) {
theRiver = updatedFeeds;
displayFeeds();
}
$.ajax ({
url: "http://rss.scripting.com/rivers/nytRiver.js",
dataType: "jsonp"
});
function displayFeeds() {
var feedText = "";
// Create title
for (var i in theRiver.updatedFeeds.updatedFeed) {
feedText = feedText + theRiver.updatedFeeds.updatedFeed[i].feedTitle + " <a href=" + theRiver.updatedFeeds.updatedFeed[i].feedUrl + "> (Feed) " + "</a><br>";
feedText = feedText + "<a href=" + theRiver.updatedFeeds.updatedFeed[i].item[0].link + ">" + theRiver.updatedFeeds.updatedFeed[i].item[0].title + "</a><br>";
feedText = feedText + theRiver.updatedFeeds.updatedFeed[i].item[0].body + "<br>";
feedText = feedText + "<br>";
}
document.getElementById("demo").innerHTML = feedText;
}
</script>
</head>
<body>
<h1><center>Minimal River.js Feed Reader</center></h1>
<p id="demo">Wating for feeds to load....</p>
</body>
</html>
答案 0 :(得分:1)
尝试
$(function() {
onGetRiverStream = function (updatedFeeds) {
theRiver = updatedFeeds;
displayFeeds();
};
displayFeeds = function() {
var feedText = "";
// Create title
for (var i in theRiver.updatedFeeds.updatedFeed) {
feedText = feedText + theRiver.updatedFeeds.updatedFeed[i].feedTitle + " <a href=" + theRiver.updatedFeeds.updatedFeed[i].feedUrl + "> (Feed) " + "</a><br>";
feedText = feedText + "<a href=" + theRiver.updatedFeeds.updatedFeed[i].item[0].link + ">" + theRiver.updatedFeeds.updatedFeed[i].item[0].title + "</a><br>";
feedText = feedText + theRiver.updatedFeeds.updatedFeed[i].item[0].body + "<br>";
feedText = feedText + "<br>";
}
document.getElementById("demo").innerHTML = feedText;
};
$.getScript("http://rss.scripting.com/rivers/nytRiver.js");
});
答案 1 :(得分:0)
问题是Firefox插件Privacy Badger。它阻止rss.scripting.com成为第三方跟踪器。
我为谷歌浏览器安装了相同的插件 - 虽然在开始时它没有阻止rss.scripting.com。但是,一旦它阻止它,Chrome调试工具就会设法更好地使用Firebug并且它会出现以下错误:
net::ERR_BLOCKED_BY_CLIENT
快速SO搜索提出了这个答案:I am getting Failed to load resource: net::ERR_BLOCKED_BY_CLIENT with Google chrome
这意味着它是一个导致问题的广告拦截插件。