gpt4 book ai didi

jQuery 使用 AJAX 加载 Google 可视化 API

转载 作者:行者123 更新时间:2023-12-03 21:39:04 25 4
gpt4 key购买 nike

有一个问题我无法解决,我在互联网上查了很多,但一无所获。

我有这个 JavaScript,用于通过 PHP 执行 Ajax 请求。请求完成后,它会调用一个函数,该函数使用 Google Visualization API 绘制带注释的时间线来呈现数据。

该脚本在没有 AJAX 的情况下工作得很好,如果我内联执行所有操作,它工作得很好,但是当我尝试使用 AJAX 执行它时,它不起作用!!!

我得到的错误是在“数据”DataTable 的声明中,在 Google Chrome 开发者工具中,我得到一个未捕获的类型错误:无法读取未定义的属性“DataTable”

当脚本出现错误时,页面上的所有内容都会被清除,只显示一个空白页面。

所以我不知道如何让它发挥作用。

$(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});
}

最佳答案

我记得当我使用 Google API 时,它明确表示要首先初始化加载。因此,也许可以将 google.load 函数保留在 AJAX 之外,然后在成功时继续调用函数的第二部分:

//Straight Away!
google.load('visualization', '1', {'packages': ['annotatedtimeline']});

$(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.setOnLoadCallback(drawData(html));
}
});
});

关于jQuery 使用 AJAX 加载 Google 可视化 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com