【问题标题】:Run ajax scripts on page when navigating with ajax?使用 ajax 导航时在页面上运行 ajax 脚本?
【发布时间】:2010-05-29 20:15:42
【问题描述】:

我在 ASP.NET MVC 项目中遇到了一点问题。

我在右下角有一个聊天 div(比如 facebook),当然我不希望在导航到我所有的导航都是 ajax 时重新加载它。

我面临的问题是我在视图页面的顶部使用了以下代码:

<script type="text/javascript">
$(document).ready(function() {
  $('#divTS').hide();
    $('a#showTS').click(function() {
 $('#divTS').slideToggle(400);
 return false;
  });
});

</script>

问题是这段代码只加载了ajax,似乎没有触发?我想在新加载的视图中运行所有脚本,就像我没有使用 ajax 导航一样。

我不能把它放在 site.master 中,因为它只加载一次,然后可能我试图隐藏的 div 不存在。

有没有在ajax加载的div中运行脚本的好方法?

【问题讨论】:

    标签: c# asp.net-mvc ajax


    【解决方案1】:

    您需要在 ajax 脚本的成功回调函数中运行脚本。我建议您将其外部化为一个单独的函数:

    function setupEffects() {
        $('#divTS').hide();
        $('a#showTS').click(function() {
            $('#divTS').slideToggle(400);
            return false;
        });
    }
    
    $(document).ready(function() {
        setupEffects();
    });
    

    并在脚本的成功回调中调用此函数:

    success: function(result) {
        setupEffects();
    }
    

    【讨论】:

    • 这是不是意味着每次有人导航时都会运行所有脚本,甚至是与当前页面无关的脚本?
    • 根据功能将脚本组织成单独的方法,并在必要时调用它们。
    • 谢谢,我想我会这样做的:)
    【解决方案2】:

    当您导航到另一个视图时,母版页会重新加载。您还可以使用$('#div').length &gt; 0 检查是否存在 div。

    顺便说一句,不应使用“完整站点”ajax 导航。在导航上重新加载您的聊天 - 最好将其放入控件中(让事情变得更容易)。

    【讨论】:

    • ajax 导航的整个想法是不重新加载母版页......此外,完整的站点 ajax 导航基于一些搜索,这似乎是最好的方法跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2014-10-19
    相关资源
    最近更新 更多