2016-07-27 67 views
2

的特性“文件,”我下面@Sam Farajpour加马里的从答案:How to populate google charts using data from database created via code first - ASP.Net MVCjQuery.getJSON()错误:浏览器链接:未能调用的返回值的回调:类型错误:无法读取空

那是我的script.js

google.charts.load('current', { packages: ['corechart', 'line'] }); 
google.charts.setOnLoadCallback(drawLineColors); 
function drawLineColors() { 

    var data = new google.visualization.DataTable(); 

    data.addColumn('number', '@Model.Days'); 
    data.addColumn('number', '@Model.Time'); 

    console.log("!!!"); 
    //data.addRows([  
    // [9, 12], [11, 14] 
    //]); 

    $.getJSON("http://localhost:4411/GetChart", null, function (chartData) { 
     $.each(chartData, function (i, item) { 
       data.addRows([[item.Days, item.Time]]); 
     ); 


     var options = { 
      title: 'You can see on chart in which time you eat', 
      hAxis: { 
       title: 'Days' 
      }, 
      vAxis: { 
       title: 'Time' 
      }, 
      colors: ['#FF6B00', '#0033FF'] 
     }; 

     var chart = new google.visualization.LineChart(document.getElementById('chart_div')); 
     chart.draw(data, options); 
    }); 
} 

正如你可以看到我放的“http://localhost:4411/GetChart”,而不是“@ Url.Action(‘GetChart’)”,因为第一个没有工作。

而在控制器我有:

[Route("/GetChart")] 
     public IActionResult GetChart() 
     { 
      return Json(_db.database 
       .Select(p =>new {p.Days, p.Time})); 
     } 

http://localhost:4411/GetChart在浏览器返回:

[{"Days":1101,"Time":20},{"Days":1102,"Time":20},{"Days":1103,"Time":20}] 

评论硬编码版本“[9,12],[11,14 ]“工作正常,但当前的script.js版本在浏览器控制台(F12)中返回错误:

Uncaught Error: Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3 
!!! 
browserLink:64 [00:57:43 GMT+0400 (Russian Daylight Time)] Browser Link: Failed to invoke return value callback: 
TypeError: Cannot read property 'files' of null 

因此,我有没有数据的空图。我需要帮助来了解我在哪里有问题?也许问题在于脚本正在以[[days],[time]]的格式查找数据,但是它以格式:[{data},{time}]获取数据。如果是这样,我怎么能修理它? 让我知道是否需要任何其他信息。感谢您的时间和答案。

+0

所以你需要在你的代码中使用这个版本的jquery:https://cdnjs.com/libraries/jquery/1.9.1。 – applecrusher

+0

我已经在NuGet包管理器下载了1.9.1版本,但问题仍然存在。 @applecrusher,你知道如何解决它吗? – Anela

+0

是否有一个HTML文件来放置jQuery代码或导入脚本的方式? – applecrusher

回答

0

解决它自己。真是愚蠢的错误。我不得不改变这一点:

data.addRows([[item.Days, item.Time]]); 

这样:

data.addRows([[item.days, item.time]]); 

现在我想明白为什么会这样呢?在我的项目中,我使用大写字母命名了Days and Time。

0

“现在我想明白为什么会这样?在我的项目中,我使用大写字母命名了Days and Time。”

你使用的是asp.net核心吗?如果是的话,你必须打开camelCase这个接口默认开启。

相关问题