2016-01-23 66 views
1

我現在有我的網頁上Highcharts散點圖具有以下結構:更新Highchart系列數據與格式化的AJAX返回

$(function() { 

    $('#container').highcharts({ 

      /*chart options, etc... this does not change*/ 

      series: [/*there is some default data here*/] 

     }); 
    }); 

這個圖表的外觀和偉大工程。另外,我在頁面上有幾個複選框和一個按鈕。當按下按鈕時,我有一些jQuery查看選中的複選框,並將這些信息發送到一個PHP文件,該文件基於選中的複選框返回一個NEW數據系列。該代碼如下所示:

var Obj = {}; 
    $('button').click(function(e) { 
     var tableIDs = $("#boxes input:checkbox:checked").map(function() { 
      return $(this).val(); 
     }).get(); 
     var idClicked = e.target.id; 
     Obj.tables = tableIDs; 
     $.ajax({ 
      url: 'update.php', 
      type: 'post', 
      data: { 
       "points": JSON.stringify(Obj) 
      }, 
      success: function(data) { 
       console.log(data);  /*for testing*/ 
      } 
     }); 
    }); 

此代碼位於腳本的最後,並且位於我的highcharts函數之外。我已經徹底測試了AJAX,並且一切正常。 PHP的設置方式,AJAX的回報是以下格式:

{name: 'series1', data: [[...,...],[...,...],...]}, 
{name: 'series2', data: [[...,...],[...,...],...]} 

不是一個數組,只是一個很長的字符串,有很多在它的數字(我把上面的兩行清晰) 。換句話說,它的格式完全符合我的Highchart的'series:'選項。我的PHP返回的系列數量取決於檢查哪個/多少個複選框。

所以,這裏是我的問題:什麼是用AJAX返回的新數據替換已經顯示在我的高圖上的默認數據的最佳方式?或者,默認數據是可選的,如果使這更容易,可以將其刪除。

這裏有很多類似的問題,但我似乎在爲我的問題採取其他人的解決方案。我看了一些直接更新解決方案,如rockStarLeJared提出的那些解決方案,但我沒有任何運氣讓他們將舊數據更新爲新數據或插入任何數據。

我特別喜歡DemoUser提出的解決方案,基本上是將數據作爲變量傳遞給包裝好的highcharts函數。這裏是什麼,通常是這樣的:

function my_chart(data) { 

    $('#container').highcharts({ 

     /*chart options, etc... this does not change*/ 

     series: [ /*there is some default data here*/ ] 

    }); 
} 

然而,當我做到這一點,它完全打破了我的圖表,我一直無法得到這個工作,並通過適當的。

任何建議/意見將不勝感激。

+1

這部分新的數據嘗試設置它:'不是一個數組,只是一個很長的字符串,有很多在it'數 - 是問題。你可以返回數組(JSON)嗎?我的意思是,這是一個非常漂亮的字符串,但Highcharts需要一個對象來處理,而不是字符串:) –

回答

1

林做這種方式

var chart = $('#container').highcharts(); 

if (chart) { 
chart.series[0].setData([]); 
} 

這應該從圖中清除數據。

我剛剛在我的代碼中注意到,即時通信爲新數據重新創建圖表,但我不認爲這是必要的。

一旦你再次使用

chart.series[0].setData([data]);