我有一些代码可以使用jQuery的Ajax方法向Twitter发出简单的get请求(搜索)。该代码在Safari上运行良好,但在Firefox (3.6.3)上失败。在Firefox中,将调用我的jQuery.ajax参数'success‘方法,但所提供的数据为null。(在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 closeHTTP状态是OK (200),Content是正确的application/json,2126的内容长度(gzip'd)意味着数据返回。然而,火虫显示响应为空,而对提供的数据的测试显示它为‘null.n’。
我知道一个类似的关于堆栈溢出,https://stackoverflow.com/questions/1188976的文章,并由此假定这个问题可能与跨域安全有关,但是.我知道有很多的JavaScript小部件和诸如此类的东西,这些都是Ajax从推特获取的数据。有什么需要我允许的吗?
发布于 2012-05-31 05:29:41
您正在尝试进行跨域Ajax调用。要做到这一点,您需要使用JSONP。
JQuery理解JSONP,它将为您处理所有潜在的技巧。
您只需要添加参数&callback=?对您的URL和JQuery将发出请求作为跨域调用。更重要的是,它将理解并处理来自服务器的JSONP响应,因此对您来说它将是透明的。
https://stackoverflow.com/questions/2619002
复制相似问题