2011-03-04 44 views
3

在jquery站點上顯示:jquery中的腳本數據類型

「腳本」:將響應評估爲JavaScript並對其進行評估。

我通過ajax調用和一大堆標記得到一段js代碼(沒有腳本標記)。爲了讓標記起作用,我需要一旦有js代碼就立即執行。我是否必須將JS代碼追加到dom中才能執行,或者像在jquery網站上說的那樣,它只是在它自己得到時自動執行?

有人可以幫助我嗎?

感謝, 大號

回答

2

如果你指的是jQuery.getScript(),應該執行該函數立即返回代碼。實際上,根據文檔,您可以指定一個回調參數,並且此回調傳遞已加載的腳本,但已加載的腳本將在調用回調之前執行。因此,您不必執行任何操作或將其添加到DOM,只要下載完成,它就會立即執行。另外,不需要腳本標記,就像在外部.js文件中一樣。

+0

不,它不是關於getScript的。 – lshettyl 2011-03-04 15:15:46

+0

啊,好的...那麼你打電話的時候是什麼? – 2011-03-04 16:10:39

0

如果我正確理解您的問題,如果您使用的是$.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); 

希望這有助於。

0

也許你應該做2個不同的Ajax查詢:

  • 一個與數據類型:「腳本」來獲得(和執行)的腳本
  • 一個與數據類型:「HTML」爲您的內容。

最簡單的方法可能是包括與響應的其他腳本(標籤正確)。我認爲它一旦被包含在DOM中就會被評估。

+0

這正是我正在做的。但是我看不到所需的輸出。我得到如下的腳本:「var a = 1; var b = ............. call();」然後是HTML。我也看到了附加到DOM的HTML。但它不起作用,因爲它無法查找它需要的腳本。 – lshettyl 2011-03-04 15:14:39

+0

jQuery文檔說:「腳本」:將響應評估爲JavaScript並將其作爲純文本返回。也許這就解釋了爲什麼你看到代碼。儘量不要將它添加到DOM。你確定它沒有執行嗎? – 2011-03-04 15:16:59

+0

我試着把兩者都作爲一個,但不幸的是,jquery/ajax不喜歡

相關問題