0
我有一個令人費解的情況。Highcharts:第二次收集頁面上的所有圖表會產生錯誤
我有一個頁面有幾個柱形圖。在這個頁面上,也有一個鏈接,點擊它建立一種形式,將數據發送到服務器,服務器發回一個PDF文檔:
$('#my-link").click(function(ev) {
var svgArray=[];
$(Highcharts.charts).each(function(i, chart){
svgArray.push(chart.getSVG()); <!--show error "TypeError: chart is undefined" in Firefox when clicking on it the second time without refreshing the page -->
});
var svgJson = JSON.stringify(svgArray);
var form = $('#my-form');
var ele = $('<input name="chartSvgArray" style="display: none" value="' + $.base64('encode', svgJson) + '">');
form.append(ele);
form.submit();
ev.preventDefault();
});
瀏覽器能夠獲得PDF文件(在它的圖表)從服務器,並提示我打開或保存它。在上面我使用了兩個Javascript工具。 JSON和.base64 http://www.jqueryscript.net/text/Base64-Decode-Encode-Plugin-base64-js.html。
這是我遇到問題的地方。而無需刷新頁面,我再次點擊該鏈接,我得到這一行錯誤:
svgArray.push(chart.getSVG()); <!--show error "TypeError: chart is undefined" in Firefox when clicking on it the second time without refreshing the page -->
如果我刷新(重裝)的頁面,對每一次生產的文件沒有問題。
任何人都可以告訴我如何解決這個問題嗎?
感謝和問候。
帕維爾,謝謝爲您的輸入!你的意思是說,在第二次導出時,我仍然可以收集所有圖表,但需要使用該「如果測試」跳過未定義? Highcharts.chart中新創建的圖表是否按照它們在頁面上顯示的順序進行放置?謝謝!!! – curious1 2014-10-06 16:09:51
是的,該數組中的順序與它們在頁面上創建的順序相同。是的,你需要使用'if(chart)...'來確保你不會嘗試導出非導出圖表。或者不用'if(chart)',你可以使用if(typeof chart ==='undefined')'。第二個應該更安全。 – 2014-10-07 08:42:47