【问题标题】:Loading google datatable using ajax/json使用 ajax/json 加载谷歌数据表
【发布时间】:2010-05-20 21:01:26
【问题描述】:

我不知道如何使用 ajax/json 加载数据。这是我在远程文件 (pie.json) 中的 json 代码

{ 
   cols: [{id: 'task',  label: 'Task',          type: 'string'}, 
          {id: 'hours', label: 'Hours per Day', type: 'number'}], 
   rows: [{c:[{v: 'Work'},     {v: 11}]}, 
          {c:[{v: 'Eat'},      {v: 2}]}, 
          {c:[{v: 'Commute'},  {v: 2}]}, 
          {c:[{v: 'Watch TV'}, {v:2}]}, 
          {c:[{v: 'Sleep'},    {v:7, f:'7.000'}]} 
         ] 
  } 

这是我迄今为止尝试过的,但它不起作用。

<script type="text/javascript" src="http://www.google.com/jsapi"></script> 

<script type="text/javascript"> 
google.load("visualization", "1", {packages:["piechart"]}); 

function ajaxjson() { 
   jsonreq=GetXmlHttpObject(); 
   jsonreq.open("GET", "pie.json", true); 
   jsonreq.onreadystatechange = jsonHandler; 
   jsonreq.send(null); 
  } 


function jsonHandler() { 
 if (jsonreq.readyState == 4) 
   { 
   var res = jsonreq.responseText; 
   google.setOnLoadCallback(drawChart); 
   function drawChart() { 
   var data = new google.visualization.DataTable(res, 0.6) 
   var chart = new google.visualization.PieChart(document.getElementByI('chart_div')); 
   chart.draw(data, {width: 400, height: 240, is3D: true}); 
   }     // end drawChart 
   } // end if 
} // end jsonHandler 


function GetXmlHttpObject() 
  { 
   var xmlHttp=null; 
   xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
   return xmlHttp; 
  } 

如果我将 'res' 变量替换为 pie.json 中的实际代码,则一切正常。

任何帮助将不胜感激。

【问题讨论】:

    标签: ajax json datatable google-visualization


    【解决方案1】:

    只是一个猜测,因为我不熟悉您正在使用的 google 对象,但我很确定 responseText 只是返回一个字符串。 JavaScript 不能原生解析 JSON(据我所知只有 XML),所以你必须eval("var res = " + jsonreq.responseText)

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      如果我在你里面,我会使用 jQuery 来保存一些代码:

      $.getJSON("pie.json", function(data) { 
        drawWanChart(data);
      });
      

      这里是绘制图表的函数:

       function drawWanChart(jsonData)
       {
          jsonData = jQuery.parseJSON(jsonData);
      
          if(jsonData != null)
          {                           
              data = new google.visualization.DataTable(jsonData);
              chart = new Google.visualization.Table(document.getElementById('chart_div'));
              chart.draw(data, null);
          }
       }
      

      请参考官方文档:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-24
        相关资源
        最近更新 更多