【发布时间】:2010-04-11 22:50:27
【问题描述】:
我的代码使用 jQuery 的 Ajax 方法向 Twitter(搜索)发出简单的 get 请求。该代码在 Safari 上运行良好,但在 Firefox (3.6.3) 上失败。在 Firefox 案例中,我的 jQuery.ajax 参数 'success' 方法被调用,但提供的数据为空。 (在 Safari 中,我收到了很多 JSON 数据。)
我的 Ajax 调用是:
$.ajax({
url: 'http://search.twitter.com/search.json?q='+searchTerm,
dataType: 'json',
async: true,
beforeSend: function(request) {
window.console.log('starting AJAX request to get Twitter data');
},
success: function(data, textStatus, request) {
window.console.log('AJAX request to get Twitter succeeded: status=' + textStatus);
callback(data);
},
error: function(request, status, error) {
window.console.log('Ajax request to get user data --> Error: ' + status);
errback(request, status, error);
}
});
Firebug 显示响应标头:
Date Sun, 11 Apr 2010 22:30:26 GMT
Server hi
Status 200 OK
X-Served-From b021
X-Runtime 0.23841
Content-Type application/json; charset=utf-8
X-Served-By sjc1o024.prod.twitter.com
X-Timeline-Cache-Hit Miss
Cache-Control max-age=15, must-revalidate, max-age=300
Expires Sun, 11 Apr 2010 22:35:26 GMT
Vary Accept-Encoding
X-Varnish 1827846877
Age 0
Via 1.1 varnish
X-Cache-Svr sjc1o024.prod.twitter.com
X-Cache MISS
Content-Encoding gzip
Content-Length 2126
Connection close
HTTP 状态正常 (200),Content-Type 正确为 application/json,Content-Length 为 2126 (gzip'd) 表示数据返回。然而,Firebug 显示 Response 为空,并且对提供的数据的测试显示它为“null”。
我知道 Stack Overflow 上有一个类似的帖子,jQuery $.get() function succeeds with 200 but returns no content in Firefox 并由此假设这个问题可能与跨域安全有关,但是...我知道有很多 JavaScript小部件和诸如 Ajax 从 Twitter 获取数据的东西。我需要启用什么功能才能允许这样做吗?
【问题讨论】:
-
啊,肯定是跨域安全策略的问题。已添加“&callback=?”到 GET 请求,现在一切正常。
-
您能否更新您的原始帖子并添加回调选项? - 谢谢!
-
@Zhami:如果你回答了它,你应该在这里发布你的解决方案作为答案。
-
@Zhami,如果您在此处发布您的解决方案作为答案,那就太好了。