Ajax.BeginForm post方法发送/完成时启动/停止加载

时间:2013-06-07 06:00:41

标签: jquery post ajax.beginform

我正在使用MVC2中的Ajax.BeginForm进行ajax调用,如下所示:

using (Ajax.BeginForm("methoname", "controller", new AjaxOptions
{
   HttpMethod = "Post",
   OnSuccess = "OnSuccessUserSave",
   UpdateTargetId = "PopupBody"

}))

现在,我希望在请求发送时显示加载,并在请求完成/成功/失败时停止。

我知道我可以使用

OnBegin = "startLoading",
OnComplete = "stopLoading",
OnFailure = "stopLoading",
OnSuccess = "stopLoading"

但是,我不想这样。

我有很多这样的要求。

所以,我想用jQuery制作。

一旦我编写了jquery脚本,它就会针对每个请求触发。

我喜欢这个:

$(document).ajaxSuccess(function () {
  $('#LoadingImage').modal('hide');
});

$(document).ajaxComplete(function () {
    $('#LoadingImage').modal('hide');
});

$(document).ajaxSend(function () {
    $('#LoadingImage').modal('show');
});

$(document).ajaxError(function () {
    $('#LoadingImage').modal('hide');
});

但是,它仅适用于以下语法:

 $.ajax({
    type: "GET",
    url: "NewUser/Testing",
    dataType: "json",
    // cache: false,
    success: function (response) {
        alert("Request Success");  
    },
    error: function (xhr, status) {
        alert('Unknown error ' + status); 
    }
 });

并且,它不适用于Ajax.BeginForm。

我该怎么做才能使用jquery?

任何帮助都会受到太多赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:0)

MVC框架精美地集成了jQuery。我建议你也使用jQuery表单。在这种情况下,请使用Html.BeginForm代替Ajax.BeginForm这样的内容:

('form').on('submit',function(){
     var form = $(this);
     $.ajax({
        url: form.attr('action'),
        data: form.serialize(),
        dataType: 'json',
        success : function(data){//success function here},
        error : function(resp, status, xhr){}
  });
});