0

我有一个 div 的列表。
当我单击 div 中的按钮时,我会使用包含表单的部分视图切换 div 内容。
这是我单击该按钮时发生的代码:

@Html.ActionLink("edit", "EditUserLanguage", "UserLanguage", new { userLanguageId = Model.UserLanguageId }, new { @class = "editButton" })
...
$(document).on('click', '.editButton', function (e) {
        $.ajax({
            url: this.href,
            cache: false,
            success: function (html) {                
                var id = $(e.target).closest("div").attr("id");
                $("#" + id).empty();
                $("#" + id).append(html);
            }
        });
        return false;
    });

我添加的 Html(部分视图)具有:

 @using (Html.BeginForm("UpdateUserLanguage", "UserLanguage", FormMethod.Post, new { id = "updateUserLanagegeForm" }))
                            {
    ...

这个主视图在哪里是 div 的列表,我在哪里添加这个新的部分视图,我有这个代码:

$(function () {
            $('#updateUserLanagegeForm').submit(function () {
                $.ajax({
                    url: this.action,
                    type: this.method,
                    data: $(this).serialize(),
                    success: function (result) {                        
                        alert("work");                        
                    }
                });
                return false;
            });
        }); //update

当我点击提交动作方法被调用并且我得到新的局部视图返回但不是通过ajax.
我只得到返回的部分视图。alert("work");永远不会被调用。
这个ajax调用不起作用的原因可能是什么?

4

1 回答 1

2

submit处理程序未附加到表单,因为在 dom 准备好后加载表单。因此,将您的代码更改为 -

$('body').on('submit','#updateUserLanagegeForm',(function () {
    $.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function (result) {                        
            alert("work");                        
        }
    });
    return false;
});

这会将处理程序附加到表单,即使它是动态添加的。

于 2013-03-31T12:01:48.140 回答