0

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

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

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

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

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

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

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

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

谢谢

4

4 回答 4

1

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

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

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

于 2011-02-16T07:37:43.807 回答
1

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

于 2011-02-16T07:38:35.537 回答
0

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

由于浏览器安全限制,大部分“Ajax”请求都受同源策略的约束;请求无法从不同的域、子域或协议成功检索数据。

听起来您违反了该政策。

于 2011-02-16T07:39:01.433 回答
0

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

  1. response.setContenyType("text/json");
  2. response.setHeader("Access-Control-Allow-Origin","*");
于 2011-02-20T15:33:26.213 回答