台灣最大程式設計社群網站
線上人數
1793
 
會員總數:240324
討論主題:186329
歡迎您免費加入會員
討論區列表 >> PHP >> Highcharts error #16
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Highcharts error #16
價值 : 50 QP  點閱數:1094 回應數:20

樓主

Leo
門外漢
0 19
896 60
發送站內信

參考了Highcharts的元件

弄了一個長條圖

放在一個超連結裡面,點選時可以顯示該統計圖

已確定可正常顯示


但是重複點選時出現以下錯誤
錯誤: Highcharts error #16: www.highcharts.com/errors/16

GOOGLE了一下

好像是重複載入的問題

下方是相關問題解釋
http://www.highcharts.com/errors/16
(沒用到Highstock)


我是直接寫在Head底下
<script src="../_js/highcharts.js"></script>


還是不知該如何解決...

再請各位協助

謝謝 !

搜尋相關Tags的文章: [ Highcharts ] ,
本篇文章發表於2016-08-01 16:55
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
這需要你完整的程式碼才可以幫你判斷。

基本上來說,這的確是發生了多重載入的情況。

你或許可以先用一支test的html來試一下後。再來組合進去你的樣板內。
並查看是否有多重的宣告
本篇文章回覆於2016-08-01 18:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Leo
檢舉此回應
感謝版主回應

我大概是HTML有個<DIV MENU>
MENU裡面有幾個連結(A href)
當點了MENU裡面的超連結
會將該連結LOAD到<DIV POST的位置>

其中有問題的連結是php
裡面有定義<script src="../_js/highcharts.js"></script>
就這樣出錯了...

我整理個簡易版本的程式碼之後

再麻煩大家看看


另外直接請問

是否有方法可以直接判斷是否已定義
如果已經定義了就不執行這段@@

不知是否有點異想天開
本篇文章回覆於2016-08-01 21:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

Daimom
捐贈 VP 給 Daimom 檢舉此回應
這篇參考看看:動態載入JS
不過還是建議查為什麼會多重載入會比較好...
本篇文章回覆於2016-08-02 08:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Leo
檢舉此回應
下方是目前的程式碼(有簡化部分內容)

HTML


totalview.php


圖表中的值取自於資料庫的


目前問題好像是我從HTML連到totalview.php

在totalview.php裡面有個<script src="_js/highcharts.js"></script>

重複點選時會出現Highcharts Error #16

再請各位協助解惑

感謝 !
本篇文章回覆於2016-08-02 08:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
因為你是採用load的方式來做載入的。
所以對於jquery而言。運行的瀏覽器還是在同一頁上。

自然當你第二次load了totalview.php。其highcharts又會再載入一次。
自然就會出錯了。

你可以改變一下做法。
在totalview上只做資料的輸出動作就好。認真來說html標簽是沒必要的。只要有相對body的內容就可以了。
因為load的寫法。其實是插入你目前的瀏覽器html上。並不像是你用內框模式需要重新宣告標頭的。

其js及程序全放在你的主html上就行了。

或許你可以也改成ajax的方式只取資料出來。然後再重建div內的內容。
這是會比較安全的方式。
本篇文章回覆於2016-08-02 09:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Leo
檢舉此回應
版大的意思是我將以下js
<script type="text/javascript" src="_js/jquery.min.js"></script>
<link href="_css/jquery-ui.min.css" rel="stylesheet">
<script src="_js/jquery-ui.min.js"></script>
<script src="_js/highcharts.js"></script>
放在HTML那頁就可以了嗎?

也嘗試這樣處理過
但執行時出現下方錯誤
Uncaught TypeError: $(...).highcharts is not a function

是不是因為PHP頁面找不到<script src="_js/highcharts.js"></script>的關係...
本篇文章回覆於2016-08-02 10:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Leo
檢舉此回應
更新一下上方的敘述

我同版主的建議將js寫在HTML頁面
(totalview.php 不再另行寫一個)

目前這樣可以正常點選,圖表也可正常顯示
(反覆點選也OK,不會出現重複定義的問題)

但如果我點了其他連結 e.g.上方程式碼的assignedcaseQuery.html或是import.html
(上面這兩個連結都沒有highcharts.js)

再點totalview.php這個連結

就會出現Uncaught TypeError: $(...).highcharts is not a function的問題
本篇文章回覆於2016-08-02 14:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
如果不是用load的方式。而是直接連結的。當然會出現這個錯誤啊。
因為你的totalview並無相關的highcharts 操作。

會叫你放在原html的用意,就是因為你是利用其html來去呼叫載入totalview。
其運行還是在html上跑。
所以寫在html上的highcharts 就可以一起使用。也不會重覆載入。

但如果是單獨(連結過去)的totalview。因已經無其html的作用位置存在了。
你當然還是需要重新呼叫啊~~~~

你要分清楚view的作業原理啦。
如果有totalview獨立呼叫的情況。最好還是另外做個view來處理會比較快。
本篇文章回覆於2016-08-02 16:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
一個html去load了view1+view2。其作用域還是在其html上。
但如果是用href去連結了view1。其作用域是在其view1上。

搞清楚一下這個東西。你的view的觀念很差喔!!
本篇文章回覆於2016-08-02 16:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Leo
檢舉此回應
版主不好意思我不是很懂您的意思

依我目前的作法不是都在index.html上load各個連結嗎?

寫在index.html裡面的程式碼
引用js以及load連結


html連結的位置



目前這樣的作法不是點選MENU中的連結就在index.html載入totalview.php / assignedcaseQuery.html / import.html 嗎?

如果先點了assignedcaseQuery.html的連結,再點totalview.php連結

應該也是在同一個html吧?!



目前有點混亂

再請協助解惑

感謝 !
本篇文章回覆於2016-08-02 17:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
汗!!!

你load是背景式請求。也就是你在a頁面堜I叫了b頁面放到a頁面上。其a頁面並沒跳轉出去。還是存在。
b頁面則是算與a頁面合併成單一頁面。簡單來說就是a+b = a的情況了。

而href的請求。則是a頁面跳轉到b頁面上。其a頁面已經是不存在。完全轉到b頁面上了。

這兩者是如以上的不同。

本篇文章回覆於2016-08-04 15:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

Leo
檢舉此回應
版主你這樣描述我就懂了
用load進行頁面的切換,其實上個頁面還存在,只是被蓋住而已吧?!
用href才是整個頁面都換掉吧!

但我目前這個狀況

我不清楚怎麼解決@@

是否有建議的操作方式

清除掉上一個load?
用href但指定到特定div?


再請指教

感謝 !
本篇文章回覆於2016-08-04 16:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
不錯的參考

迷路
捐贈 VP 給 迷路 檢舉此回應
如果所有頁面都是放在index.html上的某個區塊進行載入
不會另外獨立開啟的話
可以把所有需要用的js全部放在index.html就好

或者也可以換個做法
把現在用來load的區塊,從div換成iframe
這樣應該就不會有重覆載入的問題
本篇文章回覆於2016-08-05 09:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

Leo
檢舉此回應
真的覺得見鬼了...

我再整理一下程式碼

重新將<script src="_js/highcharts.js"></script>放在index.html
(拿掉totalview.php裡面的)

竟然可以正常開Chart了 !!!!!


可是明明動作跟之前一樣

是不是瀏覽器一直在執行之前的程式版本...

我後來觀察Chrome開發者模式的Console訊息

我明明程式碼註解掉了但還是一直出現

再開了一個無痕模式來看才正常

請問瀏覽器在執行時是不是有可能一直執行之前的暫存?

如果這樣可以如何避免?!

感謝大家的勞心勞力

小弟我再繼續研究

謝謝 !


本篇文章回覆於2016-08-05 10:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
愛用無痕模式吧
網頁開發,尤其是前端開發
瀏覽器使用舊的暫存可是經常碰到的

避免的方法?在引用的js和css檔的後面加上無意義的隨機參數
似乎可以讓瀏覽器每次都去重新下載
但是這樣其實增加了網站流量的負擔
我個人是不贊成啦
本篇文章回覆於2016-08-05 13:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   

回覆
如要回應,請先登入.