Crossdomain jQuery.ajax有时在firefox 8中不起作用,但在Chrome / IE中有效

时间:2011-12-07 21:16:19

标签: ajax firefox jquery

我有这个脚本使用jQuery 1.7.1查询我的Ruby on Rails应用程序(位于远程域上)。该脚本在Chrome中运行良好,甚至在IE9中也可以,但在Firefox中则不行。

这是脚本:

Informer= {
  getData: function(args)
  {     
    $.ajax({
      dataType: 'jsonp',            
      data: args,
      url: 'http://localhost:3000/informer.js',
      beforeSend: function () {
        alert("beforeSend");
      },
      error: function () {
        alert("error");
      },
      success: function (data) {      
        alert("success");
      },
      complete: function(){
        alert("complete");
      } 
    });
  }
}

我称之为

$(document).ready(function()
{
  Informer.getData(someArgs);
});

所以在chrome中我得到3个警报,而在firefox中我只得到“beforeSend”。我也没有在萤火虫中看到任何要求。

它肯定与URL有关。我将其更改为http://jsfiddle.net/echo/jsonp/并且有效。 但我还有两个原因:

UPD

简而言之,这就是我到目前为止所拥有的:

  1. 昨天它根本不适合我(3小时浪费,叹气),今天确实如此。
  2. 它始终适用于Chrome和IE
  3. 请求未在Firebug中显示<​​/ li>
  4. 当脚本失败时(意思是,我只收到beforeSend警报),我的应用程序日志没有更新(我假设,FF不发送请求)
  5. 尝试使用jquery-jsonp但没有结果
  6. 使用FF8的11位用户中有10位报告该脚本有效。
  7. Here's针对那些被捕者(如果有的话)的测试脚本

1 个答案:

答案 0 :(得分:1)

只是为了让你的有效:(我为你的插入了你的...你不知道你在那里有什么和伪造的args)你可以测试一下:

Informer = {
    getData: function(args) {
        $.ajax({
            dataType: 'jsonp',
            data: args,
            url: 'http://localhost:3000/informer.js',
            beforeSend: function() {
               alert("beforeSend");
             },
            error: function() {
                 alert("error");
            },
            success: function(data) {
                 alert("success");
         },
            complete: function() {
                 alert("complete");
        }
        });
    },
    howdy: {}
};
var someArgs = {
    hi: "me"
};
$(document).ready(function() {
    Informer.getData(someArgs);
});

编辑:修复了参数问题:http://jsfiddle.net/MarkSchultheiss/NKgyM/

并将其设置为回显返回的值。