-1

我正在尝试使用 javascript 将 API 中的数据存储到数组中。尝试这样做:

 $.getJSON('http://search.twitter.com/search.json?q=Hamburg&rpp=5&lang=all',       function(standings) {
        menStandings.append(standings);
        alert('Done!');
    });

我想做的就是将它存储在一个名为 menStandings{} 的数组中,但是我收到一个错误:

XMLHttpRequest 无法加载http://search.twitter.com/search.json?q=Hamburg&rpp=5&lang=all。Access-Control-Allow-Origin 不允许 Origin null。

4

2 回答 2

1

这意味着您在不同的域(您是)上,并且您正在尝试访问另一个域并且它被阻止(跨域问题)。

很多时候,当您使用通常不允许向不同域发出请求的https时,就会发生这种情况http

无论哪种方式,您都可以验证您正在从相同的协议运行,或者使用JSONP(带填充的 JSON),您将在其中向服务器发送回调,将数据返回给您(不推荐,但这里是一个示例) http://www.jquery4u.com/json/jsonp-examples/

$.getJSON('http://search.twitter.com/search.json?_=' + (new Date()).getSeconds() + '&q=Hamburg&rpp=5&lang=all&callback=?', function(data) {
        alert(JSON.stringify(data));
    });

// notes:
//_ + getSeconds - puts a timestamp to ensure no caching.
//callback=? - jquery will put the callback for you so the remote server can respond.

但是请注意,twitter 不鼓励使用 JSONP(我也是)

如何通过 JSON-P 使用 REST API?

REST API 支持几乎所有方法的回调参数。有关更多信息,请参阅每个开发人员都应该知道的事情。

在 API v1.1 中,所有请求都需要身份验证。因此,大多数 JSON-P 用例都被积极劝阻,因为在不暴露您的客户端凭据的情况下几乎不可能执行。

* https://dev.twitter.com/docs/things-every-developer-should-know#jsonp

于 2013-05-21T14:57:31.190 回答
1

为了让这个工作你可以使用 jsonp,你必须做类似的事情:

$.getJSON('http://search.twitter.com/search.json?q=Hamburg&rpp=5&lang=all&callback=?', function(standings) {
        menStandings.append(standings);
        alert('Done!');
    });

你在哪里有回调=?jquery 将填写 ? 使用正确的函数名称并为您接线。

你可以在http://jsfiddle.net/BJq6g/1/看到一个例子

于 2013-05-21T15:11:19.273 回答