繁体   English   中英

Google setOnLoadCallback和Ajax

[英]Google setOnLoadCallback and Ajax

我正在使用ajax来访问通过Node.js / Express为Json服务的URL。 Json的返回结果很好,我已经对其进行了测试。 应该使用Google Chart API将接收到的数据绘制在图形中(如果该数组是硬编码的,则可以很好地工作)。

我收到了4个意外的“未捕获的typeErrors”,希望将其指向正确的方向。

非常感谢您的协助!

在此处输入图片说明

这是有问题的代码(我认为)

 <!-- <script>
            var nData;
        $(document).ready(function() {
            $.ajax({
                url: 'http://localhost:3000/renderedJson',
                type: 'GET',
                dataType: 'json',
                data: [],
                success:function(data){
                nData = data;
                console.log("success");
                console.log(nData);
                }
            })
            .done(function() {
                console.log("done");
                getData();
            })
            .fail(function() {
                console.log("error");
            })
            .always(function() {
                console.log("complete");
            });
            });
        </script>

这是一个示例(具有硬编码的数据,可以正常工作!要查看,请注释ajax请求并取消注释硬编码的变量)

更新-这是我的有效负载,使用通过Express / Node(调用MongoDB实例)设置的URL进行工作

[{"_id":"559c27abe01e815c0f7b69d3","date":"2015-01-2","one":[{"a":9},{"b":8},{"c":7},{"d":6},{"e":5},{"f":4},{"g":3}],"two":[{"h":2},{"i":1}]},{"_id":"559c27abe01e815c0f7b69d2","date":"2015-01-1","one":[{"a":1},{"b":2},{"c":3},{"d":4},{"e":5},{"f":6},{"g":7}],"two":[{"h":8},{"i":9}]}]

更新在进一步调试之后,我相信以下代码不会启动。

 google.setOnLoadCallback(function() {
console.log('loaded google 1');
drawChart(cols, rows);
console.log('loaded google 2');
});

使用getData()函数未定义数据。 您当前发布的代码不完整。 查看您的小提琴, getDatadrawChart函数之间有一条界线: getData();
在ajax调用完成之前立即调用getData函数。 删除此行,它应该工作。

  • 很难看到那张照片上的错误。
  • 该图片上的错误与发生错误的位置有关,因此仅显示您的ajax不足以调试问题(仅供参考)
  • 如果未定义事物以在抛出错误的函数中检查它们,则是一个好主意。 在这种情况下,如果将nData记录在getData ,则可能会输出undefined这可能会导致问题nData

编辑

    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    google.load('visualization', '1.1', {packages: ['line']});

然后代替

google.load('visualization', '1.1', {packages: ['line']});
google.setOnLoadCallback(function() {
    drawChart(cols, rows);
});

有:

drawChart(cols, rows);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM