如何从node.js服务器接收nvd3.js中的数据
How to receive data in nvd3.js from a node.js server?
这可能是一个非常直接的问题,但我对d3.js.node.js甚至JavaScript都是新手。
我想从MySQL数据库中的一个表中获取数据,并使用nvd3.js.中的图将其绘制为动态折线图(因为该表一直在接收流数据)
到目前为止,我已经使用node.js创建了一个服务器,并从表中获取行,将它们转换为JSON并打印出来。这就是我所拥有的:
var mysql= require('mysql');
var http = require('http');
var d3 = require("d3");
var connection = mysql.createConnection({
host : '****',
user : '****',
password : '****',
database: '****'
});
connection.connect() ;
http.createServer(function (request, response)
{
connection.query('SELECT * FROM table', function(err, result)
{
response.writeHead(200, { 'Content-Type': 'application/json'});
response.end(JSON.stringify(result));
response.end();
});
}).listen(8084);
现在的问题是,因为我想使用这些数据用nvd3.js绘制一个图,所以我需要创建一个html文件,在其中我可以声明关于nvd3的库,并在那里绘制图。这样的东西:
<html>
<script src='https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.min.js'> </script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.1.15-beta/nv.d3.min.js'></script>
<link href='https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.1.15-beta/nv.d3.min.css' rel='stylesheet'>
<div id='chart' style='height:500px'>
<svg></svg>
<script>
nv.addGraph(function() {
var chart = nv.models.lineWithFocusChart();
....
我的问题是,如何使用node.js服务器中的变量result
,该变量将我想要的数据保存在html文件中?我应该直接从8084端口获取数据吗?我甚至需要使用html吗?
非常感谢。
附言:请不要包括使用PHP的解决方案,因为这不是我想要的。
您应该使用AJAX请求。你可以使用jQuery来帮助你:
var url = "localhost:8084" // Change this accordingly
$.getJSON(url, function(data) {
// Create your chart here, for now just log it:
console.log(data);
}).fail(function() {
// Something went wrong:
console.log("Error");
});
Demo
下面的饼图使用Stackoverflow的API中的JSON文档。它显示了没有答案的问题数量与至少有一个答案的问题的数量(https://api.stackexchange.com/2.2/info?site=stackoverflow)
var chartElement = d3.select("#chart svg");
var chart;
nv.addGraph(function() {
chart = nv.models.pieChart()
.x(function(d) {
return d.label
})
.y(function(d) {
return d.value
})
.showLabels(true)
.noData("Waiting for server...");
chartElement
.datum([])
.call(chart);
return chart;
}, function() {
$.getJSON("https://api.stackexchange.com/2.2/info?site=stackoverflow", function(data) {
var totalQuestions = data.items[0].total_questions;
var totalUnanswered = data.items[0].total_unanswered;
var totalAnswered = totalQuestions - totalUnanswered;
var chartData = [{
label: "Unanswered questions on SO",
value: totalUnanswered
}, {
label: "Answered questions on SO",
value: totalAnswered
}];
chartElement.datum(chartData);
chart.update();
}).fail(function() {
chart.noData("Something went wrong :(");
chart.update();
});
});
#chart {
height: 500px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.2/nv.d3.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.2/nv.d3.min.css" rel="stylesheet" />
<div id="chart">
<svg></svg>
</div>
相关文章:
- NVD3.js多图形,具有固定的x轴和y轴
- NVD3.js-缺少X轴刻度
- d3.js&nvd3.js——如何设置y轴范围
- NVD3.js scatter
- 如何从node.js服务器接收nvd3.js中的数据
- 如何在nvd3.js图中将小时和分钟作为x轴
- NVD3.js缩进树问题
- d3.js nvd3.js--获取y轴最小/最大值
- NVD3.js 多条形图工具提示颜色
- D3.js / NVD3.js 不显示正确的值
- NVD3.js yAxis 和工具提示的精度不同
- 使用 NVD3.js 反转 yAxis
- 如何将“平均”线添加到 nvd3.js堆积面积图
- NVD3.js-多折线图多x轴
- 在nvd3.js中创建具有适当值的图形
- 通过Merge更新D3.js(NVD3.js)数据
- NVD3.js(可重复使用的图表库)的替代方案
- NVD3.js:如何配置x轴或y轴值
- D3.js and NVD3.js, which to use and when
- d3.js NVD3触发工具提示手动