2013-02-21 148 views
0

我想从我的本地环境中使用jQuery发出ajax请求。jQuery ajax跨域请求

$.ajax({ 
     url: requestURL, 
     dataType: "json", 
     timeout: 120000, 
     success: function(data){ 
      // do something 

     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown){ 
      console.log("Instants.loadGame: error loading games: error text: " + textStatus + "; error thrown: " + errorThrown); 
     } 
    }); 

我一直在使用的dataType JSON和JSONP(因为这是每个人都似乎是说解决了这个问题),但我得到的错误,无论哪种方式尝试。对于dataType json,错误响应具有textStatus =“error”,errorThrown为空。对于dataType jsonp,错误响应具有textStatus =“parsererror”,而errorThrown =“jQuery19002007321439859855_1361446807440未被调用”。

我知道这段代码在与我的请求URL相同的域上运行时工作,所以我只能假设这是因为我在本地环境中执行此操作。我已经设置了我的cross-domain.xml来允许一切。我正在使用jQuery 1.9.0。

有没有人有任何想法?我一直在寻找这个网上很多,但没有,帮助别人解决方案似乎为我工作...

感谢, 希瑟

+0

哪种浏览器你正在使用? – Cris 2013-02-21 11:51:45

+0

'requestURL'它看起来像什么? – Jai 2013-02-21 11:52:46

+0

和你的'requestURL'生成json。 – Jai 2013-02-21 11:54:57

回答

0

当你得到像“jQuery19002007321439859855_1361446807440当时不叫”错误这是因为它不是一个正确的jsonp响应。当使用jsonp时,服务器需要是JavaScript(一个实际的脚本),并且该脚本需要调用一个作为url一部分提供的函数(在这种情况下,函数名为jQuery19002007321439859855_1361446807440,jQuery将映射到您提供的成功处理函数中)

最有可能的原因是服务器返回纯JSON数据,但将无法正常工作。这需要数据传递给脚本。所以请求到服务器应该返回类似

var data = {"foo":1}; //your data here 
jQuery19002007321439859855_1361446807440(data);