Javascript 使用传递的JSON数组创建Google折线图

Javascript 使用传递的JSON数组创建Google折线图,javascript,json,ajax,datetime,google-visualization,Javascript,Json,Ajax,Datetime,Google Visualization,我有一个通过ajax传递的JSON数组,在绘制数据图表时遇到了问题。 我需要能够将数组传递到图表,动态添加列而不重复 我尝试使用arrayToDataTable()和DataTable()传递不同的值,然后使用data.addColumns()和data.addRow()传递不同的值,但是每次都会出现错误 已触发ajax调用: $.ajax({ type: "POST", url: "/file.php", data: { data: dataHere,

我有一个通过ajax传递的JSON数组,在绘制数据图表时遇到了问题。 我需要能够将数组传递到图表,动态添加列而不重复

我尝试使用
arrayToDataTable()
DataTable()
传递不同的值,然后使用
data.addColumns()
data.addRow()
传递不同的值,但是每次都会出现错误

已触发ajax调用:

$.ajax({
    type: "POST",
    url: "/file.php",
    data: {
        data: dataHere,
    },
    dataType: "JSON",
    success: function(result) {
        var div = mydiv;
        drawInterfaceChart(result,div);
    },
});

使用以下代码从PHP编码的JSON:

$SQL = "SELECT DATE_FORMAT(date, 'new Date(%Y, %c, %d, %H, %i, %s)') as date, ifDesc, ifInOctets FROM tablename WHERE date between (CURDATE() - INTERVAL 1 MONTH ) and CURDATE()";
$Results = mysqli_query($db, $SQL) or die("Mysql cannot run Query");
$SQLRows = mysqli_num_rows($Results);
if ($SQLRows > 0) {
    $rows = array();
    while ($row = MySQLi_fetch_assoc($Results)) {
        $rows[] = $row;
    }
    echo json_encode($rows);
}
传递的JSON数组示例:

0: {date: "new Date(2019, 3, 26, 16, 13, 15)", ifDesc: "lo", ifInOctets: "2147483647"}
1: {date: "new Date(2019, 3, 26, 16, 13, 15)", ifDesc: "Port1", ifInOctets: "2147483647"}
2: {date: "new Date(2019, 3, 26, 16, 13, 15)", ifDesc: "Port2", ifInOctets: "2147483647"}
3: {date: "new Date(2019, 3, 26, 16, 13, 16)", ifDesc: "Port6", ifInOctets: "2147483647"}
4: {date: "new Date(2019, 3, 26, 16, 13, 16)", ifDesc: "imq0", ifInOctets: "906413834"}
5: {date: "new Date(2019, 3, 26, 16, 17, 31)", ifDesc: "lo", ifInOctets: "2147483647"}
6: {date: "new Date(2019, 3, 26, 16, 17, 49)", ifDesc: "Port1", ifInOctets: "2147483647"}
7: {date: "new Date(2019, 3, 26, 16, 17, 53)", ifDesc: "Port2", ifInOctets: "171330279"}
8: {date: "new Date(2019, 3, 26, 16, 17, 57)", ifDesc: "Port6", ifInOctets: "2147483647"}
9: {date: "new Date(2019, 3, 26, 16, 17, 57)", ifDesc: "imq0", ifInOctets: "1103910085"}
10: {date: "new Date(2019, 3, 26, 16, 20, 38)", ifDesc: "lo", ifInOctets: "2147483647"}
11: {date: "new Date(2019, 3, 26, 16, 20, 39)", ifDesc: "Port1", ifInOctets: "2147483647"}
12: {date: "new Date(2019, 3, 26, 16, 20, 40)", ifDesc: "Port2", ifInOctets: "194386054"}
13: {date: "new Date(2019, 3, 26, 16, 20, 41)", ifDesc: "Port6", ifInOctets: "2147483647"}
14: {date: "new Date(2019, 3, 26, 16, 20, 42)", ifDesc: "imq0", ifInOctets: "1128562685"}
我的绘图功能:

function drawInterfaceChart(array,divR) {
    var dataSet = [];
    $.each(array, function (data, value) {
        dataSet.push([value.date, value.ifDesc, value.ifInOctets]);
    });
    var data = google.visualization.arrayToDataTable(dataSet);
    var chart = new google.visualization.LineChart(document.getElementById(divR));
    var options = {
        title: '',
        legend: { position: 'right' }
    };
    chart.draw(data, options);
}
此布局返回错误:轴0的数据列不能是字符串类型

列0需要是一个日期时间,以及一个折线图,该折线图显示每个列及其每个“ifDesc”值的数据。我希望在图表中添加更多数据,因此创建列需要是动态的

提前谢谢

编辑:


我忘了提到我的页面包括:
google.charts.load('current',{'packages':['corechart','gauge']})和我在同一页上还有其他工作图表。

这里有一些问题,首先是日期

您将无法从该字符串中获取实际日期时间-->
“新日期(2019、3、26、16、13、15)”

不使用
eval
方法,我不推荐这种方法

最重要的是,在javascript中,当使用这个特定的日期构造函数时,
月份是以零为基础的,这意味着-->
一月=0

因此,上述日期将是4月26日,我想你想要3月26日

下面是证据(运行以下代码段)

var testDate=eval(“新日期(2019,3,26,16,13,15)”;

log(testDate)惊人的工作,非常感谢您非常详细的回答-这正是我所需要的工作方式