當我postload cluetip(即抓住它與ajax,然後附加一個腳本標籤到身體),我得到以下JavaScript錯誤:$ cluetip是未定義的。但是,一切仍然有效。任何想法爲什麼?
後載腳本經過充分測試,不會破壞其他任何內容。我已確認腳本以正確的順序加載。
當我postload cluetip(即抓住它與ajax,然後附加一個腳本標籤到身體),我得到以下JavaScript錯誤:$ cluetip是未定義的。但是,一切仍然有效。任何想法爲什麼?
後載腳本經過充分測試,不會破壞其他任何內容。我已確認腳本以正確的順序加載。
動態加載的腳本不可立即使用。你必須等待腳本完全加載,這是一個比人們想象的更復雜的問題。
我不知道cluetip,它可能是一個錯字,但$cluetip
不會被定義,$.cluetip
(注意「。」)應該是。
快速查看文檔似乎讓我覺得cluetip是一個必須在某個元素上調用的函數,即$('#somediv').cluetip(...)
。如果你想要全局默認值,你有$.cluetip.setup(...)
,但無論哪種方式,它不會定義$cluetip
,只是$.cluetip
。
我有一個類似的問題,這裏是我如何最終解決它(即沒有更多$cluetip
未定義的錯誤信息)。
首先,這是我的情況,可能與您的情況類似。在頁面上,我有一個
<div id="sel_area"></div>
它是空的,這個想法是使用jQuery的/ AJAX動態生成所需<select><option>...</option>...</select>
HTML代碼插入到#sel_area
上面,像這樣
$('#sel_area').html(data);
哪裏數據是生成的HTML select
標記。
但是,我認爲我的問題是因爲我沒有以JSON或XML格式重新生成動態生成的數據結果,然後相應地處理它。相反,我懶懶地像普通文本/ html一樣返回結果。當我一直得到$cluetip
是未定義的錯誤,無論我嘗試了什麼,我決定使用alert(data)
看到被返回。唉,在那裏我親眼看到數據不僅僅是我回應的內容,而且它還附帶了整個html頁面!這個解決方案對我來說很清楚。沒有放棄以XML或JSON協議返回數據,我做了以下小改動來解決問題:
生成<select>
標記的遠程腳本的更改。最後的最後
echo "$select_tag";
我改變了這
echo "$select_tag~";
也就是說,我追加尾隨〜(波浪號)作爲我的select_tag
串輸出和HTML頁面,我之間的分隔符,現在無論我是否喜歡,都知道會被附加。
jQuery/AJAX方法的變化。
我取代了線
$('#sel_area').html(data);
與下面幾行:
data_list = data.split('~');
$('#sel_area').html(data_list[0]);
有你有它。這就是訣竅。 split方法使我能夠很容易地從數據中分離我想要的select_tag
,因爲我已經明智地插入了〜(代字號)作爲字段分隔符,我知道它不是select_tag
結果的一部分,也不是系統附加的HTML頁面。希望這可以幫助。
是否有一個jQuery插件或處理這件事?我已經推出了我自己的postload腳本。 – calicode 2011-05-27 23:11:30
此外,$ cluetip var僅在cluetip js本身中引用。不是外部的。你的答案是否仍然適用? – calicode 2011-05-27 23:14:59
那麼,你是100%確定該腳本已成功加載?您可能想要嘗試Chrome控制檯的「網絡」標籤,或者在Firefox中使用「防篡改數據」插件,以確保您認爲正在提取該庫的HTTP請求實際上可行。當然,如果「$ cluetip」引用在庫中,並且失敗了,那麼這可能意味着您的庫已損壞,或者它的外部依賴項不滿足。 – Pointy 2011-05-28 00:36:53