我有一个问题解决不了,已经在网上找了很多资料但是没找到。
我有一个 JavaScript 用于通过 PHP 发出 Ajax 请求。当请求结束后,它会调用一个使用 Google 可视化 API 绘制带注释时间轴的函数来呈现数据。
如果没有 AJAX ,脚本可以正常工作,如果一切都内联完成,脚本也能正常工作,但当我尝试使用 AJAX 时,它就无法工作!!!
我收到的错误是在 "data" DataTable 的声明中,在 Google Chrome 开发者工具中,我得到了 Uncaught TypeError: Cannot read property 'DataTable' of undefined
。
当脚本到达错误时,页面上的所有内容都被清除,只显示一个空白页。
所以我不知道怎么让它工作。
$(document).ready(function(){
// Get TIER1Tickets
$("#divTendency").addClass("loading");
$.ajax({
type: "POST",
url: "getTIER1Tickets.php",
data: "",
success: function(html){
// Succesful, load visualization API and send data
google.load('visualization', '1', {'packages': ['annotatedtimeline']});
google.setOnLoadCallback(drawData(html));
}
});
});
function drawData(response){
$("#divTendency").removeClass("loading");
// Data comes from PHP like: <CSV ticket count for each day>*<CSV dates for ticket counts>*<total number of days counted>
// So it has to be split first by * then by ,
var dataArray = response.split("*");
var dataTickets = dataArray[0];
var dataDates = dataArray[1];
var dataCount = dataArray[2];
// The comma separation now splits the ticket counts and the dates
var dataTicketArray = dataTickets.split(",");
var dataDatesArray = dataDates.split(",");
// Visualization data
var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
data.addColumn('number', 'Tickets');
data.addRows(dataCount);
var dateSplit = new Array();
for(var i = 0 ; i < dataCount ; i++){
// Separating the data because must be entered as "new Date(YYYY,M,D)"
dateSplit = dataDatesArray[i].split("-");
data.setValue(i, 0, new Date(dateSplit[2],dateSplit[1],dateSplit[0]));
data.setValue(i, 1, parseInt(dataTicketArray[i]));
}
var annotatedtimeline = new google.visualization.AnnotatedTimeLine(document.getElementById('divTendency'));
annotatedtimeline.draw(data, {displayAnnotations: true});
}