【问题标题】:asp.net eval script in ajax html responseajax html响应中的asp.net eval脚本
【发布时间】:2011-01-02 08:38:44
【问题描述】:

我正在使用更新面板,我的回复有一些类似下面的 javascript。成功响应后,我需要对其进行评估、加载(使用外部脚本)

例如:我的 html 响应

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

【问题讨论】:

  • 当 UpdatePanel 更新时 JavaScript 不会被执行。你需要修改你的方法。
  • 请澄清你的问题......它没有意义,因为它目前的措辞......
  • 嗯...当用户单击警报()上的确定时,您希望发生一些事情吗?我想说你真正想要的是&lt;asp:button&gt; 这里。

标签: asp.net ajax updatepanel


【解决方案1】:

我不确定这个问题对你是否仍然重要,但我会尝试在下面提供一个合理的答案。

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”),尽管您可以扩展模块并为其提供一些配置。另外,我强烈建议您之前加载外部 javascript。如果由于某种原因无法执行此操作,则应另外检查是否已引用脚本以避免必要的调用和潜在的意外行为和错误。

【讨论】:

  • 谢谢!正是我要找的!
猜你喜欢
  • 2016-12-28
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多