用json访问公共推文

时间:2013-03-22 21:45:19

标签: jquery json

我试图使用json和jquery(只有公共推文)访问twitter的数据库。我写了一个函数。这是:

$(document).ready(function(){
alert("1");
$("button").click (function(){
    alert("2");
    $.getJSON("http://search.twitter.com/search.json?q=messi", function(data){
        alert("3");
    });
    alert("4");
});

} 页面加载后会出现一个警告并按预期显示1。当我点击按钮时,会出现两个警报并分别说2,4。似乎getJSON函数存在问题我无法解决它。

1 个答案:

答案 0 :(得分:1)

您的代码通过提出跨域请求侵犯了Same Origin Policy

您可以通过向查询字符串添加callback=?参数使其成为JSONP请求(不是Ajax请求且不受同源策略约束)来解决此问题:

$.getJSON("http://search.twitter.com/search.json?q=messi&callback=?", function(data){
    alert("3");
});

Fiddle

jQuery.getJSON reference

当请求URL包含callback=?参数时,jQuery会自动将其视为JSONP请求,并添加此抽象层,使其“看起来像”一个Ajax请求。您可以使用包含已解析的JSONP响应的data对象。

PS。您可能需要查看Dev Tools'(或Firebug')console进行开发。与alert不同,它是非阻塞的,允许您显示各种数据类型和嵌套数据结构。