Когда я запускаю следующее, я получаю TypeError: google.visualisation is undefined[Learn More]
данные возвращаются из моего файла .php, и я вижу их, когда создаю console.info.
Я, наверное, потерялся с обратными вызовами или, может быть, кто-то может посоветовать иначе?
Я попытался загрузить визуализацию до того, как сделаю свой ajax здесь, но с той же ошибкой. Я также просмотрел другие возможные ответы, но до сих пор не могу заставить его работать.
Это мой код:
$(document).ready(function(){
console.info("hello world")
//alert("result")
$.ajax({
url:"data.php",
dataType : "JSON",
success : function(result) {
google.charts.load('current', { 'packages':['corechart'] });
google.charts.setOnLoadCallback(function() {
console.info(result);
drawChart(result);
});
}
});
function drawChart(result) {
var data = new google.visualisation.Datatable();
data.addColumn('string','Name');
data.addColumn('number','Quantity');
var dataArray=[];
$.each(result, function(i, obj) {
dataArray.push([ obj.name, parseInt(obj.quantity) ]);
});
data.addRows(dataArray);
var piechart_options = {
title : 'Pie Chart: How Much Products Sold By Last Night',
width : 400,
height : 300
}
var piechart = new google.visualisation.PieChart(document
.getElementById('piechart_div'));
piechart.draw(data, piechart_options)
var barchart_options = {
title : 'Bar Chart: How Much Products Sold By Last Night',
width : 400,
height : 300,
legend : 'none'
}
var barchart = new google.visualisation.BarChart(document
.getElementById('barchart_div'));
barchart.draw(data, barchart_options)
}
});
Я получаю объект обратно из своего запроса к БД, поэтому я думаю, что эта часть правильная, а именно массив с 6 объектами:
0: Object { id: "1", name: "Product1", quantity: "2" }
1: Object { id: "2", name: "Product2", quantity: "3" }
2: Object { id: "3", name: "Product3", quantity: "4" }
3: Object { id: "4", name: "Product4", quantity: "2" }
4: Object { id: "5", name: "Product5", quantity: "6" }
5: Object { id: "6", name: "Product6", quantity: "11" }
Для чего стоит мой php-код:
data.php
<?php
require_once 'database.php';
$stmt = $conn->prepare('select * from product');
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_OBJ);
echo json_encode($results);
?>
database.php
<?php
$conn = new PDO('mysql:host=192.168.99.100;dbname=demo','root', 'root');
?>
Примечание: версия это похожа, но немного отличается



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вы действительно можете использовать
google.charts.load
на месте
$(document).ready
и это должно быть с z, а не s
visualization
нет
visualisation
попробуй вот так ...
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
$.ajax({
url:"data.php",
dataType : "JSON",
success : function(result) {
drawChart(result);
}
});
});
function drawChart(result) {
var data = new google.visualization.Datatable();
data.addColumn('string','Name');
data.addColumn('number','Quantity');
$.each(result, function(i, obj) {
data.addRow([ obj.name, parseInt(obj.quantity) ]);
});
var piechart_options = {
title : 'Pie Chart: How Much Products Sold By Last Night',
width : 400,
height : 300
}
var piechart = new google.visualization.PieChart(document
.getElementById('piechart_div'));
piechart.draw(data, piechart_options)
var barchart_options = {
title : 'Bar Chart: How Much Products Sold By Last Night',
width : 400,
height : 300,
legend : 'none'
}
var barchart = new google.visualization.BarChart(document
.getElementById('barchart_div'));
barchart.draw(data, barchart_options)
}
Спасибо, я понял, что эта строка var data = new google.visualization.Datatable(); должна быть в верхнем регистре t в Datatable, например, подробности о var data = new google.visualization.DataTable(); .... думаю, ишуд, иди спать :)
Большое спасибо. Я пробовал заменить s на z, но теперь у меня есть
TypeError: google.visualization.Datatable is not a constructor. Затем я попытался использовать вместо негоgoogle.charts.load, но получил ту же ошибку конструктора. какие-нибудь очевидные идеи?