【问题标题】:jQuery GetJSON called twice for ASP.NET MVC partial view为 ASP.NET MVC 部分视图调用了两次 jQuery GetJSON
【发布时间】:2010-11-09 04:34:19
【问题描述】:

我有一个包含 html.RenderPartial 的页面,它呈现 ASP.NET MVC 局部视图。

局部视图用作 jQuery 对话框,并从呈现它的页面打开。

问题是,在显示对话框时,我想在局部视图中加载和存储一个变量。在对话框内工作时,此数据用于一些查找。 但是当加载部分视图的页面时,部分视图内的 jQuery getJson 会被调用两次。为什么?

局部视图内的代码如下所示:

<script type="text/javascript">
$(function() {
    var groups = null;    

    $.getJSON("/RessourceGroup/List", null, function(data) {
        groups = data;
    });

在 Firebug 中,我可以看到页面(视图)加载了一次,但部分视图中的上述脚本仍然被调用了两次。为什么?

【问题讨论】:

    标签: jquery asp.net-mvc partial-views


    【解决方案1】:

    看起来它会在页面加载时加载。当对话框弹出时,您是否还通过 AJAX 重新加载部分?如果是这样,那么它可能会再次运行。

    编辑:根据您的更新,我怀疑脚本标签在 DIV 内,并且在调用对话框小部件时正在克隆 DIV。将脚本移到对话框正在使用的 DIV 之外,应该可以解决您的问题。

    【讨论】:

    • 当页面 Index.aspx 加载时,部分视图 test.ascx 通过
      加载。
      然后我有一个按钮来打开对话框,但只是加载 index.aspx 会使 getJSON 开始被调用两次。
    • 刚刚发现 $("#Dialog").dialog(.... 导致第二次调用。这意味着一次调用 Html.RenderPartial 一次调用 .dialog,hmmmmmm跨度>
    • 脚本在对话框DIV中吗?如果是这样,把它移到外面。我没有调查它,但可能是对话框小部件在调用它时正在创建 DIV 的克隆。将脚本移到实际 DIV 之外也应该避免脚本对象被克隆。
    猜你喜欢
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2012-07-07
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多