【问题标题】:Upgrading to jquery 1.5 leads to issues with .getJSON升级到 jquery 1.5 会导致 .getJSON 出现问题
【发布时间】:2011-02-16 07:25:56
【问题描述】:

我目前的部分代码如下:

$.getJSON("http://cross.subdomain.url.com", 功能(数据){ 警报(data.someobj); //使用数据做一些工作。 } );

urlhttp://cross.subdomain.url.com,返回json。

这在 jquery 1.4.4 中工作得非常好。

更新到 jquery 1.5 后,这已停止工作。

我尝试了以下相同的变体:

  1. 将数据类型更改为 json。
  2. 添加“回调?”到查询。

有人可以解释一下 jquery ajax 对象的行为方式吗??

谢谢

【问题讨论】:

    标签: jquery getjson jquery-1.5


    【解决方案1】:

    您需要以 JSONP 格式提供数据。

    这是 JSON,包装在一个函数中,因此在响应对包含查询字符串参数 callback=myfunction 的 url 的请求,而不是在服务器端返回 {"happy":"yes"},您生成 myfunction({"happy":"yes"}) 作为响应。

    这可能已在早期版本的 Jquery 中被屏蔽,您的应用程序可能无法在某些浏览器(例如 Chrome)中运行。

    【讨论】:

      【解决方案2】:

      这是一个错误,已在 1.5.1 中修复。见票http://bugs.jquery.com/ticket/8125,你可以在http://code.jquery.com/jquery-git.js找到带有最新修复的最新jQuery版本

      【讨论】:

      • 这个错误谈到了链接到本地​​文件。这与链接到其他子域有什么不同??
      • 我从 git 获得了夜间构建,并尝试了。同样的问题。
      • @Neeraj 我遇到了和你一样的问题,我就是这样解决的。没有理由让代码在 1.4.4 和 1.5 中工作,除非它是我提到的错误。你可以在 jQuery.com 上打开一个 bug 票来验证这个问题。他们回复得很快。
      【解决方案3】:

      getJSON 的 jQuery 文档页面显示以下内容(在 Additional Notes 部分中):

      由于浏览器安全限制, 大多数“Ajax”请求都受到 同源政策;请求 无法成功检索数据 来自不同的域、子域或 协议。

      听起来您违反了该政策。

      【讨论】:

        【解决方案4】:

        当服务器端的内容类型未设置为 json 时,也会出现此问题。 在服务器端执行以下操作可以解决问题:

        1. response.setContenyType("text/json");
        2. response.setHeader("Access-Control-Allow-Origin","*");

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-01
          • 2011-10-08
          • 2018-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-27
          • 2021-01-17
          相关资源
          最近更新 更多