2

我正在尝试使用 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 函数似乎有问题,我无法解决。

4

1 回答 1

1

您的代码通过发出跨域请求违反了同源策略。

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

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

小提琴

jQuery.getJSON参考

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

附言。您可能想查看Dev Tools(或Firebug的)console进行开发。它是非阻塞的alert,它可以让您显示各种数据类型和嵌套数据结构。

于 2013-03-22T21:50:05.580 回答