2017-09-02 12 views
1

私はAjax.BeginFormを使用して送信するフォームを持っています。私は、次の操作を行いたい:Ajax.BeginFormとOnSuccessの間でイベントを取得する方法は?

  1. すべてのデータは、我々は、コントローラを待っている間、いくつかの作業を行う
  2. Ajax.BeginFormを使用して)でフォームを送信 - 私のテキストエリアを切り捨て含むを
  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の間のイベントにアクセスしたいと思います。

+0

jQueryのajaxStart()関数を使用してみましたか?https://api.jquery.com/ajaxStart/ – jyrkim

+0

[AjaxOptions.OnBegin](https://msdn.microsoft.com/en-us/library/system) .web.mvc.ajax.ajaxoptions.onbegin(v = 118).aspx)プロパティ –

答えて

1

あなたがのためにajaxStartを使用することができますajaxStart

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

を試すことができます。このような手順2の操作を行います。

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

ajaxStart()方法は、AJAXリクエストが起動時に実行される関数を指定します。 jQuery version 1.9の時点で、この方法はdocumentにのみ添付してください。詳細はthisを参照してください。

関連する問題