升级到jquery 1.5会导致.getJSON出现问题

时间:2011-02-16 07:25:57

标签: jquery getjson jquery-1.5

我现有代码的一部分如下:

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

网址http://cross.subdomain.url.com,返回json。

这在jquery 1.4.4中完全正常。

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

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

  1. 将dataType更改为json。
  2. 添加“回调?”查询。
  3. 有人可以了解jquery ajax对象的行为吗?

    由于

4 个答案:

答案 0 :(得分:1)

您需要以JSONP的形式提供数据。

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

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

答案 1 :(得分:1)

这是一个错误,它在1.5.1中修复。查看票证http://bugs.jquery.com/ticket/8125,您可以在http://code.jquery.com/jquery-git.js

找到最新的jQuery版本,其中包含最新的修补程序。

答案 2 :(得分:0)

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

  

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

听起来你违反了这项政策。

答案 3 :(得分:0)

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

  1. response.setContenyType( “文本/ JSON”);
  2. response.setHeader( “访问控制允许来源”, “*”);