如何获取 Ajax.BeginForm 和 OnSuccess 之间的事件?

How to get event between Ajax.BeginForm and OnSuccess?

我有一个表格,我使用 Ajax.BeginForm 提交。我想执行以下操作:

  1. 正在提交包含所有数据的表单(使用 Ajax.BeginForm
  2. 在我们等待控制器的同时,做一些工作——包括截断我的文本区域
  3. 控制器完成后(使用 OnSuccess),再做一些事情

但是,虽然 1) 和 3) 完美运行,但我不知道通过哪种方式访问​​ #2。我试过在表单上使用 JavaScript 事件 submit,但似乎这个事件之前发生过,所以如果我清空我的文本区域,控制器永远不会看到这个填充值。

我的剃须刀:

    @using (Ajax.BeginForm("CreateNotification", "Task",null, new AjaxOptions() {HttpMethod = "POST", OnSuccess= "newMessage" },new {id="conv_form"}))
    {
        @Html.HiddenFor(c => c.ConversationId)

        <div class="form-group">
            @Html.TextAreaFor(c => c.New_Message, new {@class = "form-control conversation-box"})
        </div>

        <input type="submit" value="Send message" id="conversation_message_submit" class="btn btn-link pull-right" style="color: black; padding-right: 0px; font-size: 12pt;"/>

    }

我也有我的jQuery:

<script>
    $(document).ready(function() {
        /// Here I plan to truncate my textarea + other stuff
        $('#conv_form').submit(function () {
            console.log('conv_form submit');
        });
    });

    function newMessage(data) {
        console.log('newmessage fired');

    }
</script>

所以我的挑战是,对于我的 submit 事件,如果我操纵这些字段,这将改变我们发送给控制器的内容。我想访问发送到控制器的事件和 OnSuccess.

之间的事件

你可以试试 ajaxStart

 $('#conv_form').submit(function () {
        console.log('conv_form submit');
    });
}).ajaxStart(function(){
      //DoYourStuff
    })
    .ajaxStop(function(){
        //Stop Your Stuff
    });

您可以使用 ajaxStart 执行第 2 步,如下所示:

$(document).ajaxStart(function() {
   // do step 2
});

ajaxStart() 方法指定函数在 AJAX 请求开始时为 运行。自 jQuery version 1.9 起,此方法应仅附加到 document。有关详细信息,请参阅 this