2010-01-07 35 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