2010-01-07 68 views
1

我正在使用更新面板,我的回覆有一些JavaScript像波紋管。成功響應後,我需要EVAL它,裝載它(與外部腳本)asp.net eval script in ajax html reponse

例如:我的HTML響應

<script type="text/javascript" src="test.js"></script> 
<script type="text/javascript"> 
alert('asd'); 
</script> 
<div>test</div> 
<div>blah blah blah</div> 
+0

當UpdatePanel更新時,JavaScript不會被執行。你需要修改你的方法。 – 2010-01-07 04:49:09

+2

請澄清你的問題...它沒有任何意義,因爲它目前的措辭... – 2010-01-07 04:49:47

+0

嗯...你想要的東西發生時,用戶單擊確定的警報()?我會說你真正想要的是''這裏。 – Hogan 2010-01-07 05:03:02

回答

4

我不知道這個問題是否仍是對你很重要,但是我將嘗試在下面提供合理的答案。

AJAX框架不會評估通過UpdatePanel調用返回的腳本。您必須將外部腳本重新附加到文檔中,以便瀏覽器可以請求它們並評估所有內聯腳本。您可以使用我在下面粘貼的小模塊。

var UpdatePanelEnhancer = function() 
{ 
    var divSelector = '#liveArea'; 
    function evaluateScripts() 
    { 
     $(divSelector).find('script').each(function() 
     { 
      if (this.src) 
      { 
       $('body').append(this); 
      } 
      else 
      { 
       var content = $(this).html(); 
       eval(content); 
      } 
     }); 
    }; 

    Sys.Application.add_load(evaluateScripts); 
}(); 

它的薄弱部分是,你必須爲元素,其中模塊應該尋找一個腳本來評估(例如在「liveArea」)提供了一個選擇,雖然可以擴展模塊,並提供一些cinfiguration到它。另外,我強烈建議您在以前加載外部JavaScript。如果出於某種原因無法執行此操作,則應另外檢查腳本是否已被引用,以避免必要的調用以及潛在的意外行爲和錯誤。

+0

謝謝!只是我在找什麼! – 2011-07-27 13:11:18