javascript
  • jquery
  • highcharts
  • 2014-11-21 60 views 5 likes 
    5

    多個Highcharts我這就要求使用jquery.load其他網頁母版頁,例如裝入有jquery.load

    $("#loading").show(); 
    $("#arena").load('Project.prx?PID=' + dataReport); 
    $("#loading").hide(); 
    

    (Project.prx是像ColdFusion的一個內部CGI語言,並且它抽出HTML和JavaScript)。

    在瀏覽器的調試器,我得到錯誤信息像我點擊一個鏈接,每次下,即

    Uncaught Highcharts error #16: www.highcharts.com/errors/16 
    

    Highcharts網站開通Ë說,這個錯誤的:

    Highcharts Error #16

    Highcharts already defined in the page

    This error happens the second time Highcharts or Highstock is loaded in the same page, so the Highcharts namespace is already defined. Keep in mind that the Highcharts.Chart constructor and all features of Highcharts are included in Highstock, so if you are running Chart and StockChart in combination, you only need to load the highstock.js file.

    由於我使用jQuery的load()和針對當前文檔中一個div,它聲稱我加載的第二個實例公平的呼籲Highcharts命名空間。不過,這是我想要做的。

    所以任何想法如何等Highcharts頁面加載到一個與Highcharts命名空間的現有實例?

    LATER

    我已經取得了一些成功不是把highcharts控制器,只有在目標和發行

    $("#loading").show(); 
    $("#arena").empty(); 
    delete(Highcharts); 
    $("#arena").load('Project.prx?PID=' + dataReport); 
    $("#loading").hide(); 
    

    然而,這並沒有在每個實例證明是成功的。

    +5

    問題不是你正在加載兩個圖表,而是兩個highcharts代碼......我要做的是從Project.prx中去掉腳本標籤以避免這種情況。如果您需要在頁面上自行顯示Project.prx,則只有在請求不是AJAX調用時才添加腳本標記... – Salketer 2014-11-21 07:27:21

    回答

    1

    最好的辦法是不加載加載的文件。 您可以通過在主頁面中加載一次Highcharts,並且不加載任何後來加載的Highcharts頁面。

    第二種解決方案是將圖表放在單獨的iframe中。

    另一種方法是在Highcharts頁面中使用JavaScript加載Highcharts庫,同時使用'if'來檢查它是否已經加載。

    1

    It is a fair call for Highcharts to claim that I'm loading a second instance of the namespace. Nevertheless, this is what I want to do.

    我不認爲這實際上是想做的事。從來沒有理由要兩次加載高圖譜庫。您只需要在同一頁面上加載兩個圖表。

    簡單的解決方案:

    刪除<script src="http://code.highcharts.com/highcharts.js"></script>(或者無論你加載此文件)從您的PRX文件的輸出。不需要撥打delete(Highcharts);我不認爲這條線甚至在這種情況下做任何事情。

    稍微更強大的解決方案:

    如果需要可以直接通過瀏覽器訪問Project.prx?id=123(可能用於測試),你需要取決於如何來包裝產量達全HTML它被稱爲。

    現代瀏覽器將包含頭X-Requested-With: XMLHttpRequest,你可以在服務器代碼測試,並相應地提供包裹或upwrapped圖表;然而,這種方法真的不可靠。更可靠的解決方案是指定查詢字符串中的方式。舉例來說,你可以讓這個Project.prx ID = 123會給你:??

    <div id="container"></div> 
    <script type="text/javascript" > 
        $('#container').highcharts({ 
         ... 
        }); 
    </script> 
    

    但Project.prx ID = 123 & V =測試會給你:

    <!DOCTYPE html> 
    <html> 
    <head> 
        <title>Data Report 123</title> 
        <script src="//code.jquery.com/jquery-2.1.0.js" type="text/javascript" ></script> 
        <script src="http://code.highcharts.com/highcharts.js" type="text/javascript" ></script> 
    </head> 
        <body> 
         <div id="container"></div> 
         <script type="text/javascript" > 
          $('#container').highcharts({ 
          ... 
          }); 
         </script> 
        </body> 
    </html> 
    
    1

    您可以在iframe中加載Project.prx。

    相關問題