当前位置: 首页 > 面试题库 >

jQuery使用AJAX加载Google Visualization API

蔺翰音
2023-03-14
问题内容

有一个我无法解决的问题,我一直在互联网上浏览很多东西,但一无所获。

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

该脚本在没有AJAX的情况下也能很好地工作,如果我内联完成所有工作,那么它会很好,但是当我尝试在AJAX中进行操作时,它就无法工作!!!

我得到的错误是在“数据” 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});                              
}

问题答案:

我记得当我使用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)); 
        }
    });  
});


 类似资料:
  • 问题内容: 我的问题: 我有index.html: 是这样的: 问题很简单。 当我按下按钮时,我想动态加载内容,而无需刷新。 提前致谢!请发表评论以进行任何必要的澄清。 编辑,更详细的解释: 我不确定自己是否很清楚(或者我可能不了解我缺乏技术技能的答案),所以我再说一遍。(改写) 我有一个带有提交按钮的HTML,该按钮通过POST方法发送变量。 PHP文件使用此变量,并在经过一定过程后插入并更新M

  • 问题内容: 使用fancybox(v2),如何创建一个唯一的URL,该URL在加载时显示带有iframe内容的fancybox。我可以很好地处理内联内容(例如,www.mysite.com / index.html#idgoeshere),但不知道为了加载fancybox以及其中的特定iframe,URL或js应该包含什么内容或ajax.txt页面。 我想要达到的目标是通过转到以下链接: www.

  • 问题内容: 我该如何修复下面的脚本,以便每次都能使用!有时它起作用,有时却不起作用。 Pro JQuery 解释了造成这种情况的原因,但没有讨论如何解决。我几乎肯定它与ajax ready状态有关,但是我不知道如何编写它。Web显示了大约99种不同的方式来编写Ajax和JQuery,这有点让人不知所措。 我的目标是创建一个HTML外壳,该外壳可以填充基于服务器的文本文件中的文本。例如:假设服务器上

  • 问题内容: 我想为我的jquery ajax代码(这是jquery仍在处理时)实现一个加载图像,下面是我的代码: 如何在此代码中实现加载图像。谢谢 问题答案: 尝试这样的事情:

  • 问题内容: 我正在尝试使用AJAX加载跨域HTML页面,但除非dataType为“ jsonp”,否则无法获得响应。但是,使用jsonp时,浏览器期望使用脚本mime类型,但接收到“ text / html”。 我的请求代码是: 有什么方法可以避免对请求使用jsonp吗?我已经尝试使用crossDomain参数,但是没有用。 如果没有,有什么办法可以接收jsonp中的html内容?当前,控制台在j

  • 本文向大家介绍使用CDN和AJAX加速WordPress中jQuery的加载,包括了使用CDN和AJAX加速WordPress中jQuery的加载的使用技巧和注意事项,需要的朋友参考一下 确定要放在Head部分 ? 事实上最好的情况是,js文件都不要在<head>部分进行加载,否则会影响到head部分的载入速度,直接导致网站的内容(body)载入延迟。如果你确定你不需要在head部分载入jQuer