Google visualization 谷歌图表-表格有列时没有列

Google visualization 谷歌图表-表格有列时没有列,google-visualization,Google Visualization,我正在尝试创建一个谷歌图表折线图。我从C#MVC控制器方法返回的Json如下所示: function drawChart() { var jsonData = $.ajax({ url: "/Misc/GetWeeklySalesData/", dataType: "json", async: false }).responseText; // Create our data table out of JSON data

我正在尝试创建一个谷歌图表折线图。我从C#MVC控制器方法返回的Json如下所示:

function drawChart() {
    var jsonData = $.ajax({
        url: "/Misc/GetWeeklySalesData/",
        dataType: "json",
        async: false
    }).responseText;

    // Create our data table out of JSON data loaded from server.
    var data = new google.visualization.DataTable(jsonData);

    alert(data);

    // Instantiate and draw our chart, passing in some options.
    var chart = new google.visualization.LineChart(document.getElementById('chartDiv'));
    chart.draw(data, { width: 400, height: 240 });

我的JS代码如下所示:

function drawChart() {
    var jsonData = $.ajax({
        url: "/Misc/GetWeeklySalesData/",
        dataType: "json",
        async: false
    }).responseText;

    // Create our data table out of JSON data loaded from server.
    var data = new google.visualization.DataTable(jsonData);

    alert(data);

    // Instantiate and draw our chart, passing in some options.
    var chart = new google.visualization.LineChart(document.getElementById('chartDiv'));
    chart.draw(data, { width: 400, height: 240 });

我收到的消息是“Table has no columns”(表中没有列),但显然是这样的。

要直接从JSON创建数据表,它必须采用特定的格式:

否则,您可以创建空白数据表并手动加载行:

$.ajax({
  url: "/Misc/GetWeeklySalesData/",
  dataType: "json",
}).done(function (jsonData) {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Week');
  data.addColumn('number', 'Retail');
  data.addColumn('number', 'Wholesale');

  jsonData.forEach(function (row) {
    data.addRow([
      row.Week,
      row.Retail,
      row.Wholesale
    ]);
  });

  var chart = new google.visualization.LineChart(document.getElementById('chartDiv'));
  chart.draw(data, {
    width: 400,
    height: 240
  });
}).fail(function (jq, text, err) {
  console.log(text + ' - ' + err);
});

注意:强烈建议不要使用-->
async:false
。改用
done
回调

你能解释一下不使用async:false的建议吗?这是谷歌自己使用它的代码。