在本地数组中存储API

时间:2013-05-21 14:50:36

标签: javascript jquery html api xmlhttprequest

我正在尝试使用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。

2 个答案:

答案 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会填写吗?使用正确的功能名称并为您提供连接。

您可以在http://jsfiddle.net/BJq6g/1/

看到此示例