2016-05-23 9 views
0

Ich versuche ein highchart in jade (mit javascript) mit JSON-Daten von node.js zu bevölkern. Ich tue dies, indem du JavaScript in Jade hinzufügen, das funktioniert gut mit statischen Daten wie unten dargestellt:express json objekt in highcharts

var series = [ 
    { 
    name: 'Tokyo', 
    data: [7.0] 
    } 
]; 

Jetzt habe ich JSON-Daten von node.js. hinzufügen möchten I umgesetzt folgend:

app.get('/chart', function(req,res){ 
var chartData = [ 
    { 
    name: 'Tokyo', 
    data: [7.0] 
    } 
    ]; 
    res.render('chart', { 
    chart: chartData 
    }); 
}); 

Wenn I Chartdata in der Konsole zu drucken, die Ausgabe ist das gleiche wie die statischen Daten. Wenn ich (in jade)
var series = '#{chart}' setze, bekomme ich ein leeres highchart.

Das Problem scheint der JSON von Knoten js zu sein. Highcharts gibt so viele Serien wie es Zeichen gibt, was bedeutet, dass jade/javascript das JSON nicht korrekt analysiert, sondern Zeichen für Zeichen (jedes Zeichen ist ein neues Objekt). Ich habe chartData von node.js meiner Konsole gedruckt, zeigt folgendes:

[ { name: 'Tokyo', data: [ 7 ] } ] 

Ich habe versucht, JSON.stringify in meinem Knoten js-Datei, aber diese gibt ungültige JSON wie folgt:

var series = '[{"name":"Tokyo","data":[7]}]'; 

Wie kann Ich bekomme mein Diagramm mit dem von node.js zurückgegebenen JSON arbeiten?

Antwort

0

Wenn Sie Probleme bei der Ausgabe von JSON haben, versuchen Sie es mit der JSON.stringify Methode.

app.get('/chart', function(req,res){ 
var chartData = [ 
    { 
    name: 'Tokyo', 
    data: [7.0] 
    } 
    ]; 
    res.render('chart', { 
    chart: JSON.stringify(chartData, null, 4) 
    }); 
}); 
+0

Danke für den Versuch, aber ich habe schon versucht, diese und ich bekomme die Ausgabe von meiner Frage, Single letzter Satz. – Raymond

+0

Tun Sie einfach eine res.json oder res.send nur mit dem Json-Objekt dann – theaccordance

+0

Interessanter Ansatz. Wie kann ich meine Jade-Seite beim Senden von res.json rendern? – Raymond

1

Ich fand heraus, wie man das löst. In Knoten js:

Mein Fehler war in Javascript innerhalb Jade, wenn der JSON analysiert. Im Anschluss das Problem gelöst:

!{JSON.stringify(chart)}