谷歌图表没有显示 PHP 中的 Ajax 调用
google chart not showing with ajax call in php
这是我的数组.php其中json数据来自数据库,我从下面的脚本中得到了一个完美的结果
$table = [];
$table['cols'] = array(
array('id' => '', 'label' => 'Topping', 'type' => 'string'),
array('id' => '', 'label' => 'Slices', 'type' => 'number')
);
$tableName = array('1' => "tb", '2' => 'tb1');
foreach ($tableName as $key => $value) {
$row = [];
$qry = "SELECT topping, slices FROM $value";
$result = mysqli_query($con,$qry);
foreach ($result as $row) {
$temp = [];
$temp[] = array('v' => (string) $row['topping']);
$temp[] = array('v' => (int) $row['slices']);
$rows[] = array('c' => $temp);
}
$result->free();
$table['rows'] = $rows;
}
mysqli_close($con);
$jsonTable = json_encode($table, true);
echo $jsonTable;
**阵列.php数据输出,例如:**
{"cols":[{"id":"","label":"Topping","type":"string"},{"id":"","label":"Slices","type":"number"}],"rows":[{"c":[{"v":"MAX"},{"v":150}]},{"c":[{"v":"MAX1"},{"v":59}]},{"c":[{"v":"MAX2"},{"v":15}]},{"c":[{"v":"MAX3"},{"v":153}]},{"c":[{"v":"MAX4"},{"v":8}]},{"c":[{"v":"MAX5"},{"v":25}]},{"c":[{"v":"MAX6"},{"v":65}]}]
}
这是我的 Ajax 函数,我在其中从数组中计算数据.php
var jsonData = $.ajax({
url: "array.php",
dataType:"json",
}).responseText;
var data = new google.visualization.DataTable(JSON.parse(jsonData)); 变量选项 = { 标题: "我的日常活动" };var chart = new google.visualization.PieChart(document.getElementById('piechart'));图表绘制(数据,选项);
**但我仍然收到错误,请帮助**
好的,我已经将您的json输出复制到php文件(jsondata.php)中,如下所示:
$out = '{"cols":[{"id":"","label":"Topping","type":"string"},{"id":"","label":"Slices","type":"number"}],"rows":[{"c":[{"v":"MAX"},{"v":150}]},{"c":[{"v":"MAX1"},{"v":59}]},{"c":[{"v":"MAX2"},{"v":15}]},{"c":[{"v":"MAX3"},{"v":153}]},{"c":[{"v":"MAX4"},{"v":8}]},{"c":[{"v":"MAX5"},{"v":25}]},{"c":[{"v":"MAX6"},{"v":65}]}]}';
echo $out;
使用它,我修改了一点你的javascript。
var jsonData = $.ajax({
url: "jsondata.php",
dataType: "json",
async: false
}).responseText;
// Create our data table out of JSON data loaded from server.
var data = new google.visualization.DataTable(jsonData);
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
var options = { title: 'My Daily Activities' };
chart.draw(data, options);
注意两件事:
Ajax 调用内部的
async:false
。这实际上违背了Ajax的本质,但这是谷歌展示示例的方式,也是解决问题的最简单方法。var data = new google.visualization.DataTable(jsonData);
这对我有用,希望它能解决你的问题。
相关文章:
- PHP中的setcookie仅适用于localhost
- 如何在php中的jquery中对循环内的选择框值求和
- 通过传递图像的URL通过javascript读取/处理图像-类似于PHP中的file_get_contents
- PHP中的数组输出
- javascript和php中的pancard结构验证
- 带有输入参数的Javascript/PHP中的XMLHTTPrequests
- PHP中的JS.警报没有'不要出现
- php中的脚本重定向是递归的
- 如何计算与php中的CRC32函数兼容的arrayBuffer(javascript中的From FileReader)
- 在php中的服务器上执行之前对输入进行消毒
- php中的javascript var太长
- javascript中的脚本等于php中的$_SERVER['REQUEST_URI']
- 在PHP中的所有页面上都包含页眉
- JQuery Ajax PHP中的错误和成功处理
- PHP/AAJAX-使用PHP中的$_FILES访问javascript文件数组
- 如果函数PHP中的条件为true,则禁用链接
- 想要在php中的一个文件中写入2个JavaScript变量
- 填充文本框取决于php中的下拉选择
- 可以't使用ssl读取php中的cookie
- 在php中的同一网页上检索所选下拉项的值,并使用其他数据将其发布到其他表单