【问题标题】:jQuery ajax cross-domain requestjQuery ajax 跨域请求
【发布时间】:2013-02-21 19:56:35
【问题描述】:

我正在尝试使用本地环境中的 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 was not called"。

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

有人有什么想法吗?我在网上看了很多,但帮助其他人的解决方案似乎都不适合我......

谢谢, 希瑟

【问题讨论】:

  • 您使用的是哪个浏览器?
  • requestURL怎么样?
  • 和你的 requestURL 生成 json。
  • @Jai 它不应该,但如果它会解释错误消息(使用 jsonp 时)
  • 我正在使用 Firefox。我的请求 URL 正在生成 JSON 数据,如果我将它直接输入到浏览器中,我可以看到它。这不是一个特殊的 URL,但因为它是为了我的公司我不想把它放上来......就像website.com/games_json.php

标签: jquery ajax json cross-domain jsonp


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2013-01-28
    相关资源
    最近更新 更多