2017-09-02 61 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

相关问题