javascript - Google setOnLoadCallback 和 Ajax

标签 javascript jquery ajax json google-visualization

我正在使用 ajax 来访问通过 Node.js/Express 提供 Json 服务的 URL。 Json返回正常,我已经测试过了。它接收到的数据应该使用 Google Chart API 绘制在图表中(如果数组是硬编码的,则效果很好)。

我收到了 4 个意外的“未捕获的类型错误”,希望您能指出正确的方向。

非常感谢并欢迎您的帮助!

enter image description here

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

 <!-- <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>

Here is an example (with hard coded data, working! To see, comment the ajax request and uncomment the hardcoded variable)

更新 - 这是我的有效负载,通过 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() 函数定义。您当前发布的代码不完整。看看你的 fiddle ,在 getDatadrawChart 函数之间有一条线: getData();
在 ajax 调用完成之前立即调用您的 getData 函数。删除这一行,它应该可以工作。

  • 很难看出那张图片上的错误。
  • 有关的错误 图片与发生错误的地方相关,所以只是 显示你的ajax不足以调试问题(只是为了将来 引用)
  • 如果事情未定义,那么检查它们是个好主意 在抛出错误的函数内。在这种情况下,如果您 在 getData 中记录 nData 它可能会输出 undefined - 这可能会导致问题的根源。

编辑

    <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);

关于javascript - Google setOnLoadCallback 和 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31277533/

相关文章:

php - 如何让javascript打开php文件?

javascript - 将数组键推送到自己的数组

javascript - 使用 for 循环替换数组中的元素 javascript 未正确替换元素

javascript - 使用jquery将php数组发送到外部页面

Javascript/JQuery 类选择器问题

javascript - 按键值对 JavaScript 数组中的对象进行排序

javascript - 每 X 秒调用一个函数不起作用

javascript - 如何让我的按钮导航到不同的页面?

php - 我如何使用 jquery ajax 显示我的所有参数列表

php - 查找/处理停滞的 PHP 脚本