Javascript ajax回调后绘制google图表时页面崩溃

Javascript ajax回调后绘制google图表时页面崩溃,javascript,jquery,ajax,google-visualization,Javascript,Jquery,Ajax,Google Visualization,我想在从ajax接收数据时创建一个图表,当我调用GoogleAPI在ajax页面崩溃的回调函数上绘制图表时,显示一个带有javascript标记的白色页面,如下所示 <script src="https://www.google.com/uds/?file=visualization&amp;v=1.0&amp;packages=corechart" type="text/javascript"></script><link href="https:

我想在从ajax接收数据时创建一个图表,当我调用GoogleAPI在ajax页面崩溃的回调函数上绘制图表时,显示一个带有javascript标记的白色页面,如下所示

<script src="https://www.google.com/uds/?file=visualization&amp;v=1.0&amp;packages=corechart" type="text/javascript"></script><link href="https://www.google.com/uds/api/visualization/1.0/ce05bcf99b897caacb56a7105ca4b6ed/ui+en.css" type="text/css" rel="stylesheet"><script src="https://www.google.com/uds/api/visualization/1.0/ce05bcf99b897caacb56a7105ca4b6ed/format+en,default+en,ui+en,corechart+en.I.js" type="text/javascript"></script>

并删除我的旧页面结构。我的ajax函数如下所示:

$.get("stocker.php",{data:mydata} ,function(data) {
function drawVisualization() {
  google.load('visualization', '1.0', {'packages':['corechart']});
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'times');
  data.addColumn('number', 'price');
  data.addColumn('number', 'volume');
  for(i = 0; i < times.length; i++)
    data.addRow([times[i], prices[i],vols[i]]);
    google.setOnLoadCallback(function(){
        $(function(){
    new google.visualization.LineChart(document.getElementById('daychart')).
    draw(data, {});     
}) });}
drawVisualization();}
$.get(“stocker.php”,{data:mydata},函数(数据){
函数drawVisualization(){
load('visualization','1.0',{'packages':['corechart']});
var data=new google.visualization.DataTable();
data.addColumn('string','times');
data.addColumn(“数字”、“价格”);
data.addColumn('number','volume');
对于(i=0;i

白色页面的原因是什么?由于google loader中的一个怪癖,页面元素的错误是什么?当从另一个函数内部调用时,加载程序的行为不同,除非您内联指定回调,而不是通过
setOnLoadCallback
方法。除此之外,代码的结构方式也是如此实际上可以保证抛出错误,因为您在尝试使用API元素之前没有等待回调。有几种不同的方法可以正确处理此问题。在所有情况下,我建议在进行AJAX调用之前加载API,但如果要进行多个AJAX调用,则尤其需要这样做lls(由于API只加载一次,因此回调只在第一次加载时启动)。下面是一个示例,您可以从中进行操作:

function drawVisualization () {
    $.get("stocker.php", {data:mydata}, function(data) {
        // this var data line overwrites the data from your AJAX call, so you should change variable names
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'times');
        data.addColumn('number', 'price');
        data.addColumn('number', 'volume');
        // where do times, prices, and vols come from?
        for(i = 0; i < times.length; i++) {
            data.addRow([times[i], prices[i], vols[i]]);
        }
        new google.visualization.LineChart(document.getElementById('daychart')).draw(data, {});
    });
}
google.load('visualization', '1.0', {'packages':['corechart'], callback: drawVisualization});
函数绘图可视化(){
$.get(“stocker.php”,{data:mydata},函数(数据){
//此var数据行覆盖AJAX调用中的数据,因此您应该更改变量名
var data=new google.visualization.DataTable();
data.addColumn('string','times');
data.addColumn(“数字”、“价格”);
data.addColumn('number','volume');
//时间、价格和体积从何而来?
对于(i=0;i
您必须首先在页面中加载一个空的图表模板,当使用ajax获取新数据时,您只需更改该空图表的数据并重新绘制。您的问题是在ajax回调中绘制图表。

什么是“白页”?您是否在控制台中看到类似错误的内容,或者您是否在第行看到臭名昭著的“白页错误:白页”(不告诉您)堆栈跟踪:白色页面中的白色页面?“没有控制台错误…只是清除了所有页面元素。。