【问题标题】:Storing API in local array将 API 存储在本地数组中
【发布时间】:2013-05-16 09:32:29
【问题描述】:

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

【问题讨论】:

标签: javascript jquery html api xmlhttprequest


【解决方案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(我也是)

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

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

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

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

【讨论】:

    【解决方案2】:

    为了让这个工作你可以使用 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/看到一个例子

    【讨论】:

    • 不鼓励使用 JSONP...这可能只是一个简单的 https 调用 http dude,在这种情况下,他只需要在他的链接协议的末尾添加一个 's'...即https://
    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 2014-05-10
    • 2014-01-17
    • 2019-08-16
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多