在jquery站點上顯示:jquery中的腳本數據類型
「腳本」:將響應評估爲JavaScript並對其進行評估。
我通過ajax調用和一大堆標記得到一段js代碼(沒有腳本標記)。爲了讓標記起作用,我需要一旦有js代碼就立即執行。我是否必須將JS代碼追加到dom中才能執行,或者像在jquery網站上說的那樣,它只是在它自己得到時自動執行?
有人可以幫助我嗎?
感謝, 大號
在jquery站點上顯示:jquery中的腳本數據類型
「腳本」:將響應評估爲JavaScript並對其進行評估。
我通過ajax調用和一大堆標記得到一段js代碼(沒有腳本標記)。爲了讓標記起作用,我需要一旦有js代碼就立即執行。我是否必須將JS代碼追加到dom中才能執行,或者像在jquery網站上說的那樣,它只是在它自己得到時自動執行?
有人可以幫助我嗎?
感謝, 大號
如果你指的是jQuery.getScript(),應該執行該函數立即返回代碼。實際上,根據文檔,您可以指定一個回調參數,並且此回調傳遞已加載的腳本,但已加載的腳本將在調用回調之前執行。因此,您不必執行任何操作或將其添加到DOM,只要下載完成,它就會立即執行。另外,不需要腳本標記,就像在外部.js文件中一樣。
如果我正確理解您的問題,如果您使用的是$.getScript()
,那麼您請求的.js文件將在收到後立即執行。在頂部的API docs狀態。
如果您要求某個服務返回的文本恰好是JavaScript標記,那麼您必須將其包裝在<script>
標記中,然後將其附加到您的DOM。看看這個link - 它會告訴你如何做到這一點。它更純粹的JavaScript,但如果你願意,你可以縮短一些使用jQuery的東西。
文章的一個關鍵部分是這個代碼塊,演示如何在JavaScript動態添加到DOM:
var headID = document.getElementsByTagName("head")[0];
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.onload=scriptLoaded;
newScript.src = 'http://api.flickr.com/services/feeds/photos_public.gne?tags=sunset&format=json';
headID.appendChild(newScript);
希望這有助於。
也許你應該做2個不同的Ajax查詢:
但最簡單的方法可能是包括與響應的其他腳本(標籤正確)。我認爲它一旦被包含在DOM中就會被評估。
這正是我正在做的。但是我看不到所需的輸出。我得到如下的腳本:「var a = 1; var b = ............. call();」然後是HTML。我也看到了附加到DOM的HTML。但它不起作用,因爲它無法查找它需要的腳本。 – lshettyl 2011-03-04 15:14:39
jQuery文檔說:「腳本」:將響應評估爲JavaScript並將其作爲純文本返回。也許這就解釋了爲什麼你看到代碼。儘量不要將它添加到DOM。你確定它沒有執行嗎? – 2011-03-04 15:16:59
我試着把兩者都作爲一個,但不幸的是,jquery/ajax不喜歡
不,它不是關於getScript的。 – lshettyl 2011-03-04 15:15:46
啊,好的...那麼你打電話的時候是什麼? – 2011-03-04 16:10:39