Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自Json的谷歌图表;“未定义”不是一个函数;_Javascript_Json_Google Visualization - Fatal编程技术网

Javascript 来自Json的谷歌图表;“未定义”不是一个函数;

Javascript 来自Json的谷歌图表;“未定义”不是一个函数;,javascript,json,google-visualization,Javascript,Json,Google Visualization,我第一次尝试使用谷歌图表。我的Json如下所示 {\"cols\":[{\"id\":\"Date\",\"label\":\"Date\",\"type\":\"date\"},{\"id\":\"KeywordCount\",\"label\":\"count\",\"type\":\"number\"}],\"rows\":[{\"c\": [{\"v\":\"new Date(2014725)\",\"f\":\"25 July 2014\"},{\"v\":\"77\",\"f\":\

我第一次尝试使用谷歌图表。我的Json如下所示

{\"cols\":[{\"id\":\"Date\",\"label\":\"Date\",\"type\":\"date\"},{\"id\":\"KeywordCount\",\"label\":\"count\",\"type\":\"number\"}],\"rows\":[{\"c\":
[{\"v\":\"new Date(2014725)\",\"f\":\"25 July 2014\"},{\"v\":\"77\",\"f\":\"77\"}]},{\"c\":
[{\"v\":\"new Date(2014724)\",\"f\":\"24 July 2014\"},{\"v\":\"101\",\"f\":\"101\"}]},{\"c\":
[{\"v\":\"new Date(2014723)\",\"f\":\"23 July 2014\"},{\"v\":\"100\",\"f\":\"100\"}]},{\"c\":
[{\"v\":\"new Date(2014722)\",\"f\":\"22 July 2014\"},
{\"v\":\"130\",\"f\":\"130\"}]}],\"p\":null}
这对我来说很好,我无法找出我遗漏了什么,因为我只能在图表中看到一个错误(“未定义不是函数”)。我的谷歌图表javascript文件是

google.load('visualization', '1', { 'packages': ['corechart'] });
var postDate = $('#ReportingWall').serialize();

function drawChartAll() {
    var jsonData = $.ajax({
        url: '/ReportingWall/analyseStats/',
        type: 'POST',
        data: postDate,
        dataType: 'json',
        async: false,
        success: function (response) {
        }
    }).responseText;

    var data = new google.visualization.DataTable(jsonData);

    console.debug(jsonData);
    console.debug(data);
    var chart = new google.visualization.LineChart(document.getElementById('charts_all'));
    chart.draw(data, options);

    var columns = [];
    var series = {};
    for (var i = 0; i < data.getNumberOfColumns() ; i++) {
        columns.push(i);
        if (i > 0) {
            series[i - 1] = {};
        }
    }

    var options = {
        title: 'Keywords:',
        width: 908,
        legend: {
            position: 'right'
        },
        legendFontSize: 14,
        chartArea: {
            left: 50,
            width: '80%'
        },
        series: series
    }

    google.visualization.events.addListener(chart, 'select', function () {
        var sel = chart.getSelection();
        // if selection length is 0, we deselected an element
        if (sel.length > 0) {
            // if row is undefined, we clicked on the legend
            if (sel[0].row === null) {
                var col = sel[0].column;
                if (columns[col] == col) {
                    // hide the data series
                    columns[col] = {
                        label: data.getColumnLabel(col),
                        type: data.getColumnType(col),
                        calc: function () {
                            return null;
                        }
                    };

                    // grey out the legend entry
                    series[col - 1].color = '#CCCCCC';
                } else {
                    // show the data series
                    columns[col] = col;
                    series[col - 1].color = null;
                }
                var view = new google.visualization.DataView(data);
                view.setColumns(columns);
                chart.draw(view, options);
            }
        }
    });
}
google.load('visualization','1',{'packages':['corechart']});
var postDate=$(“#ReportingWall”).serialize();
函数drawChartAll(){
var jsonData=$.ajax({
url:“/ReportingWall/analyseStats/”,
键入:“POST”,
数据:postDate,
数据类型:“json”,
async:false,
成功:功能(响应){
}
}).responseText;
var data=新的google.visualization.DataTable(jsonData);
调试(jsonData);
调试(数据);
var chart=new google.visualization.LineChart(document.getElementById('charts_all');
图表绘制(数据、选项);
var列=[];
var级数={};
对于(var i=0;i0){
系列[i-1]={};
}
}
变量选项={
标题:“关键字:”,
宽度:908,
图例:{
位置:'右'
},
legendFontSize:14,
图表区:{
左:50,,
宽度:“80%”
},
系列:系列
}
google.visualization.events.addListener(图表,'select',函数(){
var sel=chart.getSelection();
//如果选择长度为0,则取消选择一个元素
如果(选择长度>0){
//如果行未定义,则单击图例
如果(sel[0]。行===null){
var col=sel[0]。列;
if(列[col]==col){
//隐藏数据系列
列[col]={
标签:data.getColumnLabel(col),
类型:data.getColumnType(col),
计算:函数(){
返回null;
}
};
//灰色显示图例条目
系列[col-1]。颜色='#cccc';
}否则{
//显示数据系列
列[col]=col;
系列[col-1]。颜色=null;
}
var view=newgoogle.visualization.DataView(数据);
view.setColumns(列);
图表绘制(视图、选项);
}
}
});
}

如果你稍微清理一下,你可以在最后一行看到一个无用的“as last char”

{"cols":[
    {"id":"Date","label":"Date","type":"date"},
    {"id":"KeywordCount","label":"count","type":"number"}],
"rows":[
    {"c":[{"v":"new Date(2014725)","f":"25 July 2014"},{"v":"77","f":"77"}]},
    {"c":[{"v":"new Date(2014724)","f":"24 July 2014"},{"v":"101","f":"101"}]},
    {"c":[{"v":"new Date(2014723)","f":"23 July 2014"},{"v":"100","f":"100"}]},
    {"c":[{"v":"new Date(2014722)","f":"22 July 2014"},{"v":"130","f":"130"}]}],
"p":null}"
还可以从一个类似PHP的示例开始

还是这个ajax

在DataTable JSON结构中使用日期时,必须省略
new
关键字;您正在构造可视化API将解析为日期对象的字符串,而不是构造日期对象本身

{
    "cols":[
        {"id":"Date","label":"Date","type":"date"},
        {"id":"KeywordCount","label":"count","type":"number"}
    ],
    "rows":[
        {"c":[{"v":"Date(2014725)","f":"25 July 2014"},{"v":77,"f":"77"}]},
        {"c":[{"v":"Date(2014724)","f":"24 July 2014"},{"v":101,"f":"101"}]},
        {"c":[{"v":"Date(2014723)","f":"23 July 2014"},{"v":100,"f":"100"}]},
        {"c":[{"v":"Date(2014722)","f":"22 July 2014"},{"v":130,"f":"130"}]}
    ],
    "p":null
}