c# - Jquery Ajax 发布后局部 View 刷新

标签 c# jquery ajax asp.net-mvc-4 jquery-datatables

在我的 C# MVC4 应用程序中,我使用两个局部 View 。局部 View 1 位于 ID 为 Partial_Analysis 的 div 中,局部 View 2 位于 ID 为 Display_Average 的 div 中。每个 View 都包含一个 datatables.net 数据表。当在部分 View 1 的表中选择一行时,会生成一个 jquery ajax post,导致部分 View 2 使用更新的数据表刷新,显示基于在部分 View 1 中所做的行选择的结果。

<script type="text/javascript" charset="utf-8">
    $(document).ready(function () {
        $('.rowselection').click(function (e) {
            var tdata = $('#form1').serialize();
            $.ajax({
                type: "POST",
                data: tdata,
                url: "Home/PartialAverage",
                success: function (result) { success(result); }
            });
        });

        function success(result) {
            $("#Display_Average").html(result);
        }
    });
</script>

单击特定按钮时,将刷新部分 View 1。

<script type="text/javascript" charset="utf-8">
    $(document).ready(function () {
        $('#ChangeName').click(function (e) {
            var tdata = $('#form1').serialize();
            var origname = $('#NameDiv').find('input[name="Name"]').first().val();
            var newname = $('#NameDiv').find('input[name="updatedName"]').first().val();
            $.ajax({
                type: "POST",
                data: {
                    mCollection: tdata,
                    Name: origname,
                    updatedName: newname
                },

                url: "Home/ChangeName",
                success: function (result) { success(result); }
            });
        });


        function success(result) {
            $("#Partial_Analysis").html(result);
        }
    });
</script>

在局部 View 1 刷新后,我希望第二个局部 View 也刷新。我试过这会导致无限循环。

<script type="text/javascript" charset="utf-8">
    $(document).ready(function () {
        $('#Partial_Analysis').ajaxSuccess(function (e) {
            var tdata = $('#form1').serialize();
            $.ajax({
                type: "POST",
                data: {
                    mCollection: tdata,
                },

                url: "Home/PartialAverage",
                success: function (result) { success(result); }
            });
        });


        function success(result) {
            $("#Display_Average").html(result);
        }
    });
</script>

最佳答案

ajaxSuccess 是一个全局处理程序,只要收到 ajax 调用的响应,它就会被调用。在其中执行另一个 ajax 调用肯定会导致无限循环。

这里最好的选择可能是更新第一个部分 View 的 success 处理程序中的第二个表:

function success(result) {
    $("#Partial_Analysis").html(result);

    reloadDisplayAverage();
}

function reloadDisplayAverage() {   
    var tdata = $('#form1').serialize();
    $.ajax({
        type: "POST",
        data: {
            mCollection: tdata,
        },
        url: "Home/PartialAverage",
        success: function (result) { success(result); }
    });

    function success(result) {
        $("#Display_Average").html(result);
    }
}

关于c# - Jquery Ajax 发布后局部 View 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014129/

相关文章:

javascript - ajax调用时执行另一个函数的原因

c# - 异步方法 'anonymous' 不应返回 void

c# - wkhtmltopdf 不会在 html 文件中拍摄图像

c# - SqlCommand 读取一个值

javascript - 是否有关于如何创建准备与 javascript 一起使用的漂亮 HTML 的指南?

php - 将值从 Controller 传递到 jQuery CodeIgniter

c# - 异常使用 GetFunctionPointerForDelegate : "The specified Type must not be a generic type definition. "

javascript - 如果更改输入值,jQuery 提交表单

javascript - 从多个表单中获取选择框的值

javascript - 点击图片滚动效果