Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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
Php Google图表API折线图上的JSON字符串无效_Php_Mysql_Json_Datetime_Google Visualization - Fatal编程技术网

Php Google图表API折线图上的JSON字符串无效

Php Google图表API折线图上的JSON字符串无效,php,mysql,json,datetime,google-visualization,Php,Mysql,Json,Datetime,Google Visualization,我正在尝试使用GoogleCharts API创建一个基于MySQL数据库的折线图。数据库包含温度和时间戳 我使用getData.php获取数据并将其转换为JSON <?php $servername = "xxx"; $username = "xxx"; $password = "xxx"; $dbname = "xxx"; $conn = mysqli_connect($servername, $username, $password, $dbname); // Check co

我正在尝试使用GoogleCharts API创建一个基于MySQL数据库的折线图。数据库包含温度和时间戳

我使用getData.php获取数据并将其转换为JSON

<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";


$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$qry = "SELECT * FROM temp";

$result = mysqli_query($conn,$qry);

$table = array();
$table['cols'] = array(

    array('label' => 'Time', 'type' => 'datetime'),
    array('label' => 'Temperature', 'type' => 'number')
);

$rows = array();
foreach($result as $row){

    $temp = array();

    //$temp[] = array('v' => 'Date(' . $row['time'] . ')'); OLD

    //turn timestamps into correct datetime form Date(Y,n,d,H,i,s) 
    $temp[] = array('v' => 'Date('.date('Y',strtotime($row['time'])).',' . 
                                 (date('n',strtotime($row['time'])) - 1).','.
                                 date('d',strtotime($row['time'])).','.
                                 date('H',strtotime($row['time'])).','.
                                 date('i',strtotime($row['time'])).','.
                                 date('s',strtotime($row['time'])).')'); 


    $temp[] = array('v' => (float) $row['temperature']); 
    $rows[] = array('c' => $temp);
}

$table['rows'] = $rows;

$jsonTable = json_encode($table, true);
echo $jsonTable;    
?>

我在这里完全不知所措。JSON字符串应该很好,它也经过了jsonlint.com的验证。非常感谢您的帮助。

复制您的代码并在getData.php中返回粘贴的json字符串,我无法重现您的错误

请检查main.html中的ajax响应:

console.log(jsonData);
如果我在getData.php中添加额外的输出(例如var_dump something),我可以创建无效的JSON字符串错误。

<body>

但是,JSON字符串周围的标记是可疑的,因为在错误消息中打印了格式错误的JSON字符串,因此标记似乎是JSON字符串的一部分。getData.php中的php代码是否嵌入到body标记中

在main.html中,您可以尝试:

jsonData=jsonData.replace("<body>", "").replace("</body>", "");
jsonData=jsonData.replace(“,”).replace(“,”);

检查,如果这可能是问题。

复制代码并在getData.php中返回粘贴的json字符串,我无法重现您的错误

请检查main.html中的ajax响应:

console.log(jsonData);
如果我在getData.php中添加额外的输出(例如var_dump something),我可以创建无效的JSON字符串错误。

<body>

但是,JSON字符串周围的标记是可疑的,因为在错误消息中打印了格式错误的JSON字符串,因此标记似乎是JSON字符串的一部分。getData.php中的php代码是否嵌入到body标记中

在main.html中,您可以尝试:

jsonData=jsonData.replace("<body>", "").replace("</body>", "");
jsonData=jsonData.replace(“,”).replace(“,”);

要检查,这是否可能是问题。

关于删除的注释:数据点非常接近,轴标签没有那么有用。您可以编辑格式:var options={'title':'Temperature','width':720','height':480,'hAxis':{'format':'dd/MM/yyyy HH:MM'};再次感谢,我自己找到了,无法编辑评论,所以决定删除它。答案是从getData.php中删除标记。非常感谢你的回答。我现在在想,怎样才能得到图表中每个点上X轴上的时间戳。这是一张图表。目前的数字只是为了测试。这似乎是连续图表的一个问题。如果水平轴不需要根据时间进行缩放,那么可以通过从datetime类型切换到string并将时间戳格式化为string来切换到离散图表。否则我不知道解决方案,可能会提出另一个问题?关于您删除的注释:数据点非常接近,轴标签没有那么有用。您可以编辑格式:var options={'title':'Temperature','width':720','height':480,'hAxis':{'format':'dd/MM/yyyy HH:MM'};再次感谢,我自己找到了,无法编辑评论,所以决定删除它。答案是从getData.php中删除标记。非常感谢你的回答。我现在在想,怎样才能得到图表中每个点上X轴上的时间戳。这是一张图表。目前的数字只是为了测试。这似乎是连续图表的一个问题。如果水平轴不需要根据时间进行缩放,那么可以通过从datetime类型切换到string并将时间戳格式化为string来切换到离散图表。否则我就不知道解决办法了,也许可以问另一个问题?