2017-09-02 65 views
1

我有一個表格,我使用Ajax.BeginForm提交。我要做到以下幾點:如何在Ajax.BeginForm和OnSuccess之間獲取事件?

  1. 的所有數據(使用Ajax.BeginForm
  2. 雖然我們等待的控制器,做了一些工作,提交表單 - 包括截斷我的textarea
  3. 當控制器(使用OnSuccess),做更多的東西

但是,雖然1)和3)完美的作品,我不知道訪問#2的方式。我已經嘗試在表單上使用JavaScript事件submit,但似乎此事件發生在之前,所以如果我清空我的textarea,控制器永遠不會看到這個填充的值。

我的剃刀:

@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之間的事件。

+0

您是否嘗試過使用jQuery的ajaxStart()函數https://api.jquery.com/ajaxStart/ – jyrkim

+0

使用[AjaxOptions.OnBegin](https://msdn.microsoft.com/zh-cn/library/system .web.mvc.ajax.ajaxoptions.onbegin(v = vs.118).aspx)屬性 –

回答

1

你可以嘗試ajaxStart

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

可以使用ajaxStart爲做第2步是這樣的:

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

ajaxStart()方法指定一個AJAX請求開始時運行的功能。從jQuery version 1.9開始,此方法只應附加到document。欲瞭解更多信息,請參閱this

相關問題