2011-05-27 113 views
0

當我postload cluetip(即抓住它與ajax,然後附加一個腳本標籤到身體),我得到以下JavaScript錯誤:$ cluetip是未定義的。但是,一切仍然有效。任何想法爲什麼?

後載腳本經過充分測試,不會破壞其他任何內容。我已確認腳本以正確的順序加載。

回答

0

動態加載的腳本不可立即使用。你必須等待腳本完全加載,這是一個比人們想象的更復雜的問題。

+0

是否有一個jQuery插件或處理這件事?我已經推出了我自己的postload腳本。 – calicode 2011-05-27 23:11:30

+0

此外,$ cluetip var僅在cluetip js本身中引用。不是外部的。你的答案是否仍然適用? – calicode 2011-05-27 23:14:59

+0

那麼,你是100%確定該腳本已成功加載?您可能想要嘗試Chrome控制檯的「網絡」標籤,或者在Firefox中使用「防篡改數據」插件,以確保您認爲正在提取該庫的HTTP請求實際上可行。當然,如果「$ cluetip」引用在庫中,並且失敗了,那麼這可能意味着您的庫已損壞,或者它的外部依賴項不滿足。 – Pointy 2011-05-28 00:36:53

0

我不知道cluetip,它可能是一個錯字,但$cluetip不會被定義,$.cluetip(注意「」)應該是。

快速查看文檔似乎讓我覺得cluetip是一個必須在某個元素上調用的函數,即$('#somediv').cluetip(...)。如果你想要全局默認值,你有$.cluetip.setup(...),但無論哪種方式,它不會定義$cluetip,只是$.cluetip

1

我有一個類似的問題,這裏是我如何最終解決它(即沒有更多$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頁面。希望這可以幫助。