JSONP与Firefox 4不起作用?

时间:2011-03-23 16:16:51

标签: jquery xss jsonp firefox4

我们一直在使用JSONP(http://code.google.com/p/jquery-jsonp/)进行一些localhost调用来检索JSON对象...我今天已升级到Firefox 4,现在代码我们使用在Firefox 4中不起作用,但它仍然适用于IE,Chrome和Safari。

使用JSONP插件,它会附加一个带有大量内容的脚本标记...实际上它就像是XSS ......所以我想知道Firefox现在是否试图阻止它。

代码:

    $.jsonp({
        url: "http://localhost:2020/wsService/LocalResources/All",
        callback: "callback",
        success: function(data) {
            // some success code
        },
        complete: function(xOptions, textStatus) {
            // this code doesn't alert in firefox 4
            alert("Complete");
        },
        error: function(xOptions, textStatus) {
            // error code
        }
    });

然后它附加此字符串

<script id="_jqjsp1" async="" src="http://localhost:2020/wsService/LocalResources/All?_1300967068015=">

无法加载:http://localhost:2020/wsService/LocalResources/All?_1300967068015=的来源

2 个答案:

答案 0 :(得分:0)

在函数内部使用“window.alert”而不是“alert”...这样就可以解决我的问题...希望这会有所帮助......

答案 1 :(得分:0)

我也在我的一个项目中使用jsonp,几个星期前我测试了它并没有用。不过我今天再次测试它似乎工作正常:

  

我在Windows 4.0和Linux上使用jQuery 3.1.2,4.1.2在Firefox 4.0,4.0.1上使用jsonp:2.1.2进行了测试

以下是我使用的代码:

jQuery.jsonp({
   url: "http://api.twitter.com/1/statuses/user_timeline.json?include_rts=t&screen_name=twitter&rpp=20&callback=?",
   success: function(data) {
      alert("Success");
   },
   complete: function(xOptions, textStatus) {
       alert("complete");
   },
   error: function(xOptions, textStatus) {
       alert("Error");
   }
});

唯一的区别是我在网址末尾传递回调为“callback =?”,而不是在请求选项中定义它(不确定是否重要)。< / p>