【问题标题】:Parsing JSON from URL and then getting values in JavaScript从 URL 解析 JSON,然后在 JavaScript 中获取值
【发布时间】:2015-08-27 08:02:21
【问题描述】:

所以,之前从 URL 解析 JSON 的问题已经解决,并且工作正常。现在我正在尝试从不同的 URL 获取 JSON,但它似乎不再起作用了。

我尝试了使上一个 URL 工作的方式,但它不适用于这个。这是我的代码:

HTML

<html>
<head>
  <meta charset="utf-8">
  <title>Get JSON from URL - Test</title>
  <script src="http://code.jquery.com/jquery-2.1.1-rc2.js"></script>
</head>
<body>

<p id="testjson"></p>

</body>
</html>

JavaScript

var scmAPI = "http://steamcommunity.com/market/priceoverview/?currency=3&appid=440&market_hash_name=Strange%20Australium%20Grenade%20Launcher";

  $.getJSON(scmAPI, function(json) {
    document.getElementById("testjson").innerHTML = "Price: " + json.lowest_price;
  });

http://codepen.io/anon/pen/PPYzOR

提前致谢。 :)

【问题讨论】:

  • 由于Same Origin Policy,JavaScript 无法向第三方域发出请求,除非请求接收者支持 JSONP 或 CORS。如果不是,您可能需要使用服务器端代理来为您发出请求
  • 如前所述here API 不支持 JSONP,这意味着您必须从服务器获取数据才能为您获取数据。
  • 那么.. 那我应该用什么来获取数据呢?
  • 你在后端使用什么样的服务器?
  • 如果您使用的是带有 PHP 的 Apache 服务器,您可以通过对 api 的 CURL 请求创建一个自托管文件,然后将此处的数据返回给您的 JavaScript。它之所以有效,是因为您从技术上讲是通过同一服务器(存储您的其他 html/js 的地方)获取数据。

标签: javascript jquery html json parsing


【解决方案1】:

您可以使用的解决方法是在您的 URL 之前添加 http://crossorigin.me/ 以基本上绕过 CORS。所以你的完整网址是http://crossorigin.me/http://steamcommunity.com/market/priceoverview/?currency=3&amp;appid=440&amp;market_hash_name=Strange%20Australium%20Grenade%20Launcher

这是一个工作示例:http://jsfiddle.net/r6g56xss/

编辑:虽然最好的方法是,就像其他人所说的那样,在服务器上发出请求,然后在收到响应后将数据传递给客户端。

【讨论】:

    【解决方案2】:

    在 Apache 服务器上执行此操作的最简单方法:

    创建一个包含以下内容的文件,例如 gateway.php:

    <?php
    $ch = curl_init('http://steamcommunity.com/market/priceoverview/?'.$_SERVER['QUERY_STRING']);
    curl_exec($ch);
    

    并将 JS 中的 'http://steamcommunity.com/market/priceoverview/' 部分替换为 'gateway.php'

    它会返回从steam社区域获取的数据,但是通过一个自托管的php文件,这不违反JavaScript的跨域策略。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2015-05-11
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 2022-09-23
      • 1970-01-01
      相关资源
      最近更新 更多