我正在尝试使用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不允许使用null。
答案 0 :(得分:1)
这意味着您位于不同的域(您是)并且您正在尝试访问另一个域并且它正在被阻止(跨域问题)。
很多时候,如果您使用的是 https ,通常不允许以 http 向其他域发出请求。
无论哪种方式,您都可以验证自己是从同一协议运行,还是使用 JSONP (JSON with Padding) ,其中您正在向服务器发送回调这将把数据返回给你(不推荐,但这里是一个例子) 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(我也是如此)
如何使用REST API而不是JSON-P?
REST API几乎支持所有方法的回调参数。查看每个开发人员应该知道的事情以获取更多信息。
在API v1.1中,所有请求都需要身份验证。因此,大多数JSON-P使用案例都很少受到劝阻 可以在不暴露客户凭证的情况下执行。
* https://dev.twitter.com/docs/things-every-developer-should-know#jsonp
答案 1 :(得分:1)
要使这个工作你可以使用jsonp,你必须做类似的事情:
$.getJSON('http://search.twitter.com/search.json?q=Hamburg&rpp=5&lang=all&callback=?', function(standings) {
menStandings.append(standings);
alert('Done!');
});
你有回调=? jquery会填写吗?使用正确的功能名称并为您提供连接。
看到此示例