我想從昨天起通過JS更新jqplot PieChart,我沒有任何突破。我在網上搜索,似乎無法獲得任何解決方案更新jqplot餅圖通過JS不工作
圖表數據保存在會話中,並且此會話不斷由應用程序更新。
這就是JSON看起來像
[ ['Take home pay', 44228.33], ['Tax', 8771.67], ['Super', 4162.5 ], ['Regular expenses', 0 ], ['Unallocated', 44228.33], ['Testing', 8000] ]
圖表加載罰款當用戶導航到該頁面第一次。
這是DIV在圖表負載
<div id="savings_expense" class="jqplot-target"></div>
這是jqplot
JS加載頁面時,工作正常
$(document).ready(function() {
var storedData = <?php echo $_SESSION['chart_data'] ?>;
var plot1;
jQuery.jqplot.config.enablePlugins = false;
plot1 = jQuery.jqplot('savings_expense', [storedData],
{
seriesDefaults: {
renderer: jQuery.jqplot.PieRenderer
},
legend: {
show: true,
rendererOptions: {
numberRows: 6
},
placement: 'outside',
location: 's',
marginTop: '15px'
}
}
);
});
這是用戶點擊更新圖表按鈕。
<li onclick="updateGraph()"><a href="#pay">YOUR TAKE-HOME PAY</a></li>
我已經嘗試了兩種方法來更新餅圖
解決方案1 在此方案中,我得到了錯誤Uncaught TypeError: Cannot read property 'replot' of undefined
。
var storedData = <?php echo $_SESSION['chart_data'] ?>;
var plot1;
function renderGraph() {
plot1.replot({
seriesDefaults: {
renderer: jQuery.jqplot.PieRenderer
},
legend: {
show: true,
rendererOptions: {
numberRows: 6
},
placement: 'outside',
location: 's',
marginTop: '15px'
}
});
}
function updateGraph() {
alert('updateGraph');
var newVal = <?php echo $_SESSION['chart_data'] ?>;
storedData.push(newVal);
renderGraph();
}
方案2 此方案中,餅圖一片空白,但傳說留
var storedData = <?php echo $_SESSION['SMP']['chart_data'] ?>;
var plot1;
function renderGraph() {
if (plot1) {
plot1.destroy();
}
jQuery.jqplot.config.enablePlugins = false;
plot1 = jQuery.jqplot('savings_expense',[storedData],
{
seriesDefaults: {
renderer: jQuery.jqplot.PieRenderer
},
legend: {
show: true,
rendererOptions: {
numberRows: 6
},
placement: 'outside',
location: 's',
marginTop: '15px'
}
}
);
}
我真的會在這裏得到任何幫助。請不要共享任何鏈接,因爲我已經通過大約每解決了我能找到的StackOverflow和淨
非常感謝您的意見,我沒有嘗試這種解決方案也是如此。在移動'document.ready'內的函數後,我得到錯誤'Uncaught ReferenceError:updateGraph未定義' – Baig
您不必在document.ready中移動函數,它應該在外面。 –
所以你說我只需要做可變的全球化,它應該工作? – Baig