Firefox jquery ajax JSONP调用不工作

Firefox jquery ajax JSONP call not working

本文关键字:工作 调用 JSONP jquery ajax Firefox      更新时间:2023-09-26

我正试图获得JSONP $.ajax请求工作。它在Chrome和IE中运行良好,但在Firefox v30中失败。

当它失败时,它不会给出任何错误-至少Firebug不会显示任何错误,它只是从不调用回调函数。

这是一个基本的演示网站(http://andysylvester.com/files/reader/),可以在Chrome和IE中工作,但不能在Firefox中工作。

nytRiver.js JSON调用实际上返回一个javascript函数调用到onGetRiverStream,参见这里的文档: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>

Try

$(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");
});

jsfiddle http://jsfiddle.net/guest271314/T7cZL/

看到jQuery.getScript ()

问题出在Firefox插件Privacy Badger上。它阻止了rss.scripting.com作为第三方跟踪器。

我在谷歌浏览器上安装了相同的插件-尽管一开始它并没有阻止rss.scripting.com。然而,一旦它阻止它然后Chrome调试工具设法更好的Firebug,它给出以下错误:

net::ERR_BLOCKED_BY_CLIENT

一个快速SO搜索带来了这个答案:我得到失败加载资源:net::ERR_BLOCKED_BY_CLIENT与谷歌浏览器

这意味着是一个广告拦截插件造成了问题