[英]How to pass JSON data to update Highcharts Pie chart
我正在尝试对服务器进行AJAX调用并传递一年的值。 然后,服务器从数据库中获取有关该年不同国家经济的信息。 然后,我将使用这些数据来更新Highcharts的饼图。
所以我的AJAX通话就像这样
$('#one').change(function() {
var val = $("#one option:selected").text();
var id = 'one';
$.ajax({
type: "POST",
url: "/sss",
data: {val, id},
dataType: 'JSON',
success: function () {
console.log('success');
},
error: function (ts) {
alert(ts.responseText);
alert(val);
}
})
.done(function (results){
results = JSON.stringify(results);
var chart = $('#char1').highcharts();
chart.series[0].setData(results);
/* chart.series[0].setData([ { name: 'USA', y: 19386200 },
{ name: 'China', y: 12059889 },
{ name: 'Japan', y: 4867528 },
{ name: 'Germany', y: 3753700 }]); */
alert(results);
})
});
然后我发布到/ sss的路线是
router.post('/sss', function(req, res, next){
console.log("sss");
var yr = req.body.val;
console.log(yr);
var funnn = function(year, callback){
uploadController.getGDPfunc(year, callback);
}
funnn(Number(yr), function(err,results){
if(err) console.log("err");
else{
//console.log(results);
res.send(results);
}
});
});
所以我从路由中调用我的控制器函数,它以正确的格式返回结果。 即使在AJAX中,我也可以记录结果,它的格式正确。 如果我要复制这些输出结果并将其粘贴到chart.series [0] .setData(HERE)中,那么它将起作用。 但是,仅当我离开chart.series [0] .setData(results)时,它才能正常工作。
任何想法为什么会这样? 如果我在AJAX“完成”部分中对数据进行硬编码,则它会正确更新,因此我不认为图表呈现是问题所在。 我觉得这是数据的格式,但是就像我说的那样,如果我将其硬编码到setData中,它将起作用。 有任何想法吗?
谢谢
您从从JSON解析的对象开始,不应该像在这里所做的那样再次将其字符串化为字符串:
results = JSON.stringify(results);
假定results
为您提供了所需的对象,只需删除该行,以便使用正确的对象(数组)而不是字符串来调用setData
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.