我遇到了一个多线图的奇怪问题。该图描绘了来自mysql数据库的数据,其中以5秒的间隔添加新行以模拟“实时”数据。然后,当从数据库中重新提取数据时,图表将以5秒的间隔更新。
“流式传输”停止并开始 - 每次更新数据时,其中有3个错误:
Uncaught SyntaxError: Unexpected token <
d3_json
respond
数据应用于每个路径/行,如下所示:
var parameter = svg.selectAll(".parameter")
.data(data, function(d) { return d.key; })
.enter().append("g")
.attr("class", "parameter");
parameter.append("path")
.attr("class", "line")
.attr("d", function(d) { return line(d.values); })
.style("stroke", function(d) { return color(d.key); });
..然后更新数据以5秒的间隔读入并更新图表并相应地转换:
d3.json("LiveData.php", function(error, data)
{
color.domain(d3.keys(data[0]).filter(function(key) { return key == "testSource_id"; }));
data = data.map( function (d) {
d.testSource_id = +d.testSource_id;
d.dateTimeTaken = parseDate(d.dateTimeTaken);
d.reading = +d.reading;
d.parameterType = d.parameterType;
d.parameter_id = +d.parameter_id;
return d;
});
data = d3.nest().key(function(d) { return d.testSource_id; }).entries(data);
x.domain([d3.min(data, function(d) { return d3.min(d.values, function (d) { return d.dateTimeTaken; }); }),
d3.max(data, function(d) { return d3.max(d.values, function (d) { return d.dateTimeTaken; }); })]);
y.domain([d3.min(data, function(d) { return d3.min(d.values, function (d) { return d.reading; }); }),
d3.max(data, function(d) { return d3.max(d.values, function (d) { return d.reading; });})]);
var newparameters = svg.selectAll("g.parameter")
.data(data);
newparameters
.select( "path.line" )
.transition()
.ease("linear")
.duration(750)
.attr( "d", function(d) { return line(d.values); })
svg.select(".x.axis")
.transition()
.duration(750)
.ease("linear")
.call(xAxis);
svg.select(".y.axis")
.transition()
.duration(750)
.ease("linear")
.call(yAxis);
我不知道这是由我转换路径/线路的方式引起的,还是与数据从数据库中引入的方式有关?有人可以帮忙吗?
答案 0 :(得分:1)
通过访问传递给d3.json
的URL返回的数据无效时,会出现此问题。在您的情况下,我猜LiveData.php
正在返回HTML而不是JSON。它也可以是通用的404或其他一些错误页面。