2016-07-27 9 views
2

Ich folge @ Sam Farajpour Ghamari ‚s Antwort von Kann nicht: How to populate google charts using data from database created via code first - ASP.Net MVCjQuery.getJSON() Fehler: Browser-Link: Fehlgeschlagen Rückgabewert Rückruf aufzurufen: Typeerror: Lesen Eigenschaft 'Dateien' von null

That mein script.js ist

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); 
    }); 
} 

Wie Sie i "http://localhost:4411/GetChart" statt "@ Url.Action ('GetChart')" gestellt sehen können, weil erste funktionierte nicht.

Und Controller ich habe:

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

http://localhost:4411/GetChart im Browser zurückgibt:

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

kommentiert hartcodierte Version „[9, 12], [11, 14 ] "funktionierte in Ordnung, aber die aktuelle script.js-Version gibt Fehler in der Browser-Konsole (F12) zurück:

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 

Als Ergebnis habe ich ein leeres Diagramm ohne Daten. Ich brauche Hilfe, um zu verstehen, wo ich ein Problem habe? Vielleicht ist das Problem, dass das Skript nach Daten in folgendem Format sucht: [[Tage], [Zeit]], aber stattdessen erhält es das Format: [{Daten}, {Zeit}] Wenn ja, wie kann ich repariere es? Lassen Sie mich wissen, wenn zusätzliche Informationen benötigt werden. Danke für deine Zeit und deine Antworten.

+0

Sie brauchen also diese Version von jquery in Ihrem Code: https://cdnjs.com/libraries/jquery/1.9.1. – applecrusher

+0

Ich habe die Version 1.9.1 im NuGet Paket-Manager heruntergeladen, aber das Problem besteht immer noch. @applecrusher, weißt du, wie man es repariert? – Anela

+0

Gibt es eine HTML-Datei, um den jquery-Code oder eine Möglichkeit zum Importieren des Skripts zu platzieren? – applecrusher

Antwort

0

Ich löste es selbst. Wirklich dummer Fehler. Ich habe gerade dies zu ändern:

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

dazu:

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

Jetzt würde ich gerne verstehen, warum ist es so? In meinem Projekt habe ich Tage und Zeit mit Großbuchstaben bezeichnet.

0

"Jetzt würde ich gerne verstehen, warum ist es so? In meinem Projekt habe ich Tage und Zeit mit Großbuchstaben benannt."

Verwenden Sie asp.net Core? Wenn ja, müssen Sie die camelCase-Konvention aktivieren, die standardmäßig aktiviert ist.