簡體   English   中英

如何傳遞JSON數據以更新Highcharts餅圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM