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

发布于 2024-10-17 09:05:35 字数 540 浏览 7 评论 0原文

我目前的代码的一部分如下:

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

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

在 jquery 1.4.4 中,这工作得很好。

更新到 jquery 1.5 后,此功能已停止工作。

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

  1. 将 dataType 更改为 json。
  2. 添加“回调”?到查询。

有人可以阐明 jquery ajax 对象的行为方式吗?

谢谢

I have a part of my present code as follows:

$.getJSON("http://cross.subdomain.url.com",
function (data) {
alert(data.someobj);
//use the data to do some work.
}
);

The url http://cross.subdomain.url.com, returns json.

This was working perfectly fine , when in jquery 1.4.4.

After updating to jquery 1.5, this has stopped working.

I have tried the following variations of the same:

  1. Changing dataType to json.
  2. Adding "callback?" to the query.

Can someone please shed light on how the jquery ajax object behaves??

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

池木 2024-10-24 09:05:35

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

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

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

You need to supply your data as JSONP.

This is JSON, wrapped in a function, so rather than returning {"happy":"yes"} on the server side, in response to a request for a url containing the query string parameter callback=myfunction, you generate myfunction({"happy":"yes"}) as the response.

This may have been masked in a prior version of Jquery and your application could have not worked in some browsers (eg. Chrome).

回眸一笑 2024-10-24 09:05:35

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

This was a bug and it is fixed in 1.5.1. See ticket http://bugs.jquery.com/ticket/8125, You can find the latest jQuery release with up to date fixes at http://code.jquery.com/jquery-git.js

放手` 2024-10-24 09:05:35

getJSON 的 jQuery 文档页面显示以下内容(在 附加注释部分):

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

听起来您违反了该政策。

The jQuery documentation page for getJSON reveals the following (in the Additional Notes section):

Due to browser security restrictions,
most "Ajax" requests are subject to
the same origin policy; the request
can not successfully retrieve data
from a different domain, subdomain, or
protocol.

It sounds like you are violating that policy.

三寸金莲 2024-10-24 09:05:35

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

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

This issue is also occurring when on the server side the content type is not set to json.
On the server side doing the following resolves the issue:

  1. response.setContenyType("text/json");
  2. response.setHeader("Access-Control-Allow-Origin","*");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文