jQuery ajax跨域请求

时间:2013-02-21 11:48:18

标签: jquery ajax json cross-domain jsonp

我正在尝试使用本地环境中的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在同一个域上运行时起作用,所以我只能假设它是因为我在我的本地环境中这样做。我已经设置了我的跨域domain.xml以允许所有内容。我正在使用jQuery 1.9.0。

有没有人有任何想法?我一直在网上看这个,但没有一个帮助其他人的解决方案似乎对我有用......

谢谢, 石楠

1 个答案:

答案 0 :(得分:0)

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

最可能的原因是服务器返回了普通的json数据,但这不起作用。该数据需要传递给脚本。因此,对服务器的请求应返回类似

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