【问题标题】:How do I get the JSON from an API request into my page's javascript?如何从 API 请求中获取 JSON 到我页面的 javascript 中?
【发布时间】:2013-11-17 03:22:30
【问题描述】:

我正在尝试使用 web api 在 JavaScript 中返回 JSON 文件。使用 Alchemy API,将调用以下 URL:

http://access.alchemyapi.com/calls/url/URLGetTextSentiment?url=http%3A%2F%2Fwww.macrumors.com%2F2013%2F11%2F05%2Fapple-releases-itunes-11-1-3-with-equalizer-and-performance-improvements%2F&apikey=[secret]&outputMode=json

这将对 macrumors 文章进行情绪分析。但是,我不确定如何将 JSON 文件实际转换为 javascript。有人知道怎么做吗?

【问题讨论】:

  • 这样的资源有很多,试试这个api.jquery.com/jQuery.getJSON
  • 您是否仅限于使用普通的旧 javascript?或者你可以使用像 jQuery 这样的库来帮助你吗?
  • 您将需要带有回调的 JSONP 来调用另一个域并检索 JSONP 结果。

标签: javascript json api httprequest alchemyapi


【解决方案1】:

您访问的 URL 似乎返回 JSON,因此请使用 ajax get 请求

jQuery.get():

var Url = 'http://access.alchemyapi.com/calls/url/URLGetTextSentiment?url=http%3A%2F%2Fwww.macrumors.com%2F2013%2F11%2F05%2Fapple-releases-itunes-11-1-3-with-equalizer-and-performance-improvements%2F&apikey=[secret]&outputMode=json'


$.get(
  Url,
  function(data, status, xhr){
    alert(data);
  }
);

【讨论】:

  • 问题中根本没有 jQuery 标签。
  • 运行以下代码但没有结果 D':pastebin.com/UZmS1Kvj 自然,我用我的实际密钥替换了 api 密钥......我也尝试从 WAMP 服务器运行它,但无济于事。我有什么特别需要做的吗?
  • 你需要确保包含 jQuery,你已经在这个项目中使用 jQuery 了吗?
  • jQuery 正在从 Google 的副本中导入,如果您查看我的源代码(请参阅上面的 pastebin 文件)。
  • 您可能无法从其他域获取数据,请参阅此答案:stackoverflow.com/a/17620877/637283
【解决方案2】:

您不能在客户端对其他域使用 AJAX 调用,因为浏览器出于安全原因会阻止此调用。如果必须进行跨域调用,则需要使用 JSONP。这是您的代码的工作示例(无 jQuery!)的 pastebin:http://pastebin.com/8vN8LqWW

因此,虽然可以在客户端处理这一切,但不建议这样做。如果它只是用于测试或个人项目,那很好,但如果你真的将它推送到公共网络,你将向世界公开你的秘密 API 密钥。在服务器端进行 API 调用要好得多,即使用 Node.js、Python、Ruby 或类似的。 AlchemyAPI 有几个SDKs 可以帮助您入门。

顺便说一句,为了披露,我为 AlchemyAPI 工作。

【讨论】:

  • "此粘贴已被删除!" - 它去哪儿了!
【解决方案3】:

我看不到 Steve 分享的 pastebin 并在 jQuery 中写了以下内容(我知道没有提到 jQuery,但我认为这可以很容易地适应没有 jQuery 的 JS):

$.ajax({
  url: 'https://access.alchemyapi.com/calls/text/TextGetTextSentiment',
  dataType: 'jsonp',
  jsonp: 'jsonp',
  type: "post",
  data: { apikey: 'APIKEYHERE', text: streamText, outputMode: 'json' },
  success: function(res){
    if (res["status"] === "OK") {
      //Do something good
    }
    else if (res["status"] === "ERROR") {
      //Do something bad
    }
  },
  error: function(jqxhr) {
    //console.log(jqxhr);
  }
});

希望这对寻找它的人有所帮助:)!我还在这里创建了一个要点:https://gist.github.com/Wysie/32b2f7276e4bd6acb66a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2017-11-28
    • 1970-01-01
    • 2020-02-13
    • 2020-08-16
    • 1970-01-01
    • 2020-10-25
    相关资源
    最近更新 更多