在完成后调用之后调用控制器操作,而不是在$(this).submit()之后调用。 请参阅下面的代码。 如何在不使用ajax来提升已完成的回调之前触发操作?
控制器:
public ActionResult MyFunction(FormCollection data){
//this should trigger before calling the CompletedEvent
}
javascript
var flag = false;
$(form).submit(function(){
if(!flag){
//raise start event
startedCallback.call();
flag = true;
$(this).submit();
//raise completed event
completedCallback.call();
}
});
答案 0 :(得分:8)
如果您不想使用ajax,则在提交后无法可靠地调用某些内容 - 表单的处理已完成。如果您想要回复,则必须使用ajax。
如果您想在表单提交之前调用您的函数 - 再次..您必须使用某种形式的ajax。
请参阅 How do I capture response of form.submit
如果你真的需要控制这样的事件 - 你需要ajax或iframe hacks。对不起:)
答案 1 :(得分:0)
也许您的操作可以返回url var,例如?status=submitted
?
然后检查您的javascript是否存在该var,如果存在,则触发您的completedCallback
。
顺便说一句,如果您不希望在false
提交表单,则应在$(form).submit(function(){return false;});
中返回flag == true
。