2016-02-05 38 views
1

我试图从cURL的不同服务器获得一个免费的油价数据JSON源到HighCharts StockChart。使用cURL返回JSON文件以使用HighCharts股票图表中的数据

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

<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到我的浏览器窗口,而不是作出漂亮的图表。

任何帮助将不胜感激!

+0

检查你的右括号javascript,他们不排队 – thanksd

回答

3

你正在尝试使用PHP CURL和jQuery getJSON在同一时间,我觉得你有点困惑。

卷曲由服务器执行,并以这种方式,它只是打印出结果一旦进入它,它甚至不结果存储在$data,因为你需要初始化卷曲等待响应与curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);。如果它将结果保存在PHP变量$data中,则此变量在Javascript中不可用,因为JavaScript在客户端计算机上执行,而不是在服务器上执行。为了解决这个问题,你可以做

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

这是不是很漂亮,但会的工作。然而,它仍然无法与您getJSON功能,因为该功能需要一个网址,以获取从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函数来完成:从您提供的网址,以获取json数据并将其存储在一个名为data变量。

+0

是的我很困惑!我试图使用cURL,因为HighCharts说JSON不能跨越域http://www.highcharts.com/docs/working-with-data/getting-data-across-domains-jsonp。我尝试了你的两个解决方案,但我所得到的只是一无所获。没有错误,并没有漂亮的图:( – rupertbj

+0

啊,在这种情况下,把'CURLOPT_RETURNTRANSFER'行和我在回答中写的回声线,并删除行'$ .getJSON'。 –

+0

Thanks Bas。I've been修改并更新我的代码,我认为cURL最终是一个侧面展示,正如你最初所建议的那样!但我仍然在努力一点。 – rupertbj