如何获取 Ajax.BeginForm 和 OnSuccess 之间的事件?
How to get event between Ajax.BeginForm and OnSuccess?
我有一个表格,我使用 Ajax.BeginForm
提交。我想执行以下操作:
- 正在提交包含所有数据的表单(使用
Ajax.BeginForm
)
- 在我们等待控制器的同时,做一些工作——包括截断我的文本区域
- 控制器完成后(使用
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。
我有一个表格,我使用 Ajax.BeginForm
提交。我想执行以下操作:
- 正在提交包含所有数据的表单(使用
Ajax.BeginForm
) - 在我们等待控制器的同时,做一些工作——包括截断我的文本区域
- 控制器完成后(使用
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。