使用jquery的后续ajax调用在mvc 4应用程序中不起作用

时间:2015-01-27 12:49:15

标签: jquery ajax asp.net-mvc asp.net-mvc-4

我的局部视图有一个表单,点击按钮我正在进行ajax调用。控制器返回局部视图并进行渲染。这一切都很完美但是当我再次点击按钮时,没有进行ajax调用。我看到几个类似的问题,后续调用失败,但没有一个解决方案适合我。我的ajax调用代码是

  $(document).ready(function () {
        $('#btnUpdateRequest').click(function (e) {
            e.preventDefault();
            $.ajax({
                url: '/Request/UpdateRequest',
                cache: false,
                data: $('form[id="RequestForm"]').serialize(),
                type: 'POST',
                success: function (data) {
                    $('.divPartial').html(data);
                    $('#ResponseContainer').addClass('show').removeClass('hide');
                }
            });
        });
    });

我的表格如下

@using (Html.BeginForm("UpdateRequest", "Request", FormMethod.Post, new {@class = "form", id = "RequestForm" }))
{
// form elements 
 <input class="btn btn-danger pull-right" id="btnUpdateRequest" value="Update" />
 }

有什么想法吗?感谢

2 个答案:

答案 0 :(得分:1)

您的脚本应位于主页上,而不是位于部分页面上。部分加载页面加载后,您的点击事件将不会被看到。要解决此问题,您需要将click事件与文档绑定

$(document).on('click', '#btnUpdateRequest', function (e) {
    //your script here
});

答案 1 :(得分:0)

试试这个

$('#btnUpdateRequest').click(function (e) {
    e.preventDefault(); //preventing the default action
    var $form = $('#RequestForm');
    $.ajax({
        url: $form.prop('action'),
        data: $form.serializeArray(),
        type: 'POST',
        success: function (data) {
            $('.divPartial').html(data);
            $('#ResponseContainer').addClass('show').removeClass('hide');
        }
    //you can return false;
    });


});