首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雅虎金融API SyntaxError给出的JSON作为google图表表的参数

雅虎金融API SyntaxError给出的JSON作为google图表表的参数
EN

Stack Overflow用户
提问于 2017-06-05 07:27:30
回答 1查看 192关注 0票数 0

我使用从它获取数据,然后我想在google图表中输入数据,但是我似乎对JSON对象有问题。所以,我尝试了所有我读过的东西,但不幸的是仍然没有成功。

误差

index.html:1 Uncaught SyntaxError: JSON中的意外标记u位于JSON.parse () at drawChart (main.js:18) at Object.google.a.c.Ac (loader.js:155) at Object.google.a.c.Pa (loader.js:155) at f (loader.js:152) at Object.google.l.m.kj (loader.js:229) at Object.google.l。m.ce (loader.js:229) at loader.js:228

JavaScript

代码语言:javascript
复制
google.charts.load('current', {
'packages': ['corechart']
});

google.charts.setOnLoadCallback(drawChart);

var options = {
    'title': 'Today is not my day',
    'width': 400,
    'height': 300
};

var input = getData();

function drawChart() {
    var chartData = google.visualization.arrayToDataTable(JSON.parse(input));
    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    chart.draw(chartData, options);
};

function getData() {
   dataArray = [
    ['Name', 'Volume'],
  ];

  var BASE_URL = "https://query.yahooapis.com/v1/public/yql?q=";
  var yql_query = 'select * from yahoo.finance.quote where symbol in ("YHOO","AAPL","GOOG","MSFT")';
  var yql_query_str = encodeURI(BASE_URL + yql_query);
  var result = yql_query_str + "&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";

  $.getJSON(result, function(data){
    var object = data.query.results.quote;
    for (var i = 0; i < object.length; i++) {
      var currentObj = object[i];
      var pushedArray = [currentObj.Name, parseFloat(currentObj.Volume)];
      dataArray[i+1] = pushedArray;
    }
    return dataArray;
  });
};

代码语言:javascript
复制
<html>
  <head>
    <meta charset="UTF-8">

    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <!-- <script type="text/javascript" src="js/request.js"></script> -->
    <script type="text/javascript" src="js/main.js"></script>
  </head>
  <body>
    <div class="container">
      <div class="row">
        <div class="col-md-12" id="chart_div"></div>
      </div>
    </div>

    <script type="text/javascript" src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  </body>
</html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-05 07:43:13

正如上面所写的,getData()同步地返回undefined,因此在drawChart()内部您实际上是在尝试JSON.parse(undefined),这将导致您收到的SyntaxError (JSON.parse()undefined转换为字符串"undefined",这是无效的JSON)。

dataArray是在请求返回后从回调到$.getJSON()的内部返回的;目前无法在drawChart()函数中访问它。

您需要重构代码,以便在drawChart()请求返回之后调用$getJSON(),因此它可以在词汇上或通过闭包访问dataArray

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44363821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档