返回带有 cURL 的 JSON 文件以使用高图表中的数据

Returning JSON file with cURL to use data in a HighCharts stock chart

本文关键字:高图表 数据 文件 cURL JSON 返回      更新时间:2023-09-26

我正在尝试将油价数据的免费JSON源从具有cURL的不同服务器获取到HighCharts StockChart中。

到目前为止,我拥有的代码如下:

<div id="container" style="width:100%; height:400px;">      
  <?php
    $ch = curl_init('https://www.quandl.com/api/v1/datasets/CHRIS/ICE_B1.json');
    $data = curl_exec($ch);
    curl_close($ch);
    ?>  
  <script>      
    $(function () {
      $.getJSON('$data', function (data) {
        // Create the chart
        $('#container').highcharts('StockChart', {
          rangeSelector : {
            selected : 1
          },
          title : {
            text : description
          },
          series : [{
            name : name
            data : data
          }
        }]
      });
    });
    });
  </script>
</div>

但这一切都是将原始 JSON 转储到我的浏览器窗口中,而不是制作一个漂亮的图表。

任何帮助将不胜感激!

您正在尝试同时使用 PHP CURL 和 jQuery getJSON,我想您有点困惑。

CURL 由服务器执行,这样它只会在获得结果时打印结果,它甚至不会将结果存储在$data中,因为为此您需要初始化 curl 以等待响应 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); .如果它将结果保存在PHP变量$data中,则此变量在Javascript中不可用,因为javascript是在客户端计算机上执行的,而不是在服务器上执行的。要解决这个问题,你可以这样做

<php echo "<script> data = ".$data."; </script>"; ?>

这不是很漂亮,但会起作用。但是,它仍然不适用于您的getJSON函数,因为此函数期望 url 从中获取 json 数据,并且不希望 json 数据作为参数。

简而言之,您只能使用如下所示的getJSON函数并删除PHP代码,它应该可以工作,我认为这就是您想要的。

 $(function () {
        $.getJSON('https://www.quandl.com/api/v1/datasets/CHRIS/ICE_B1.json', function (data) {
            // Create the chart
            $('#container').highcharts('StockChart', {

                rangeSelector : {
                    selected : 1
                },
                title : {
                    text : description
                },
                series : [{
                    name : name
                    data : data
                }]
            });
        });
    });

因为getJSON完全按照您尝试使用curl函数执行的操作:从您提供的 url 中获取json数据并将其存储在名为 data 的变量中。