2011-05-27 144 views
1

控制器操作在$(this).submit()之後不是在completedCallback之後調用。 請參閱下面的代碼。 如何在不使用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

沒有ajax的意思是什麼?你給出的例子是Asynchronous。如果您提交'同步'表單,則意味着該腳本將在$(this).submit()子句後面退出並跟隨到表單頁面。也許你不想使用xml?或者你使用某種Iframe結構?也許你可以分享一個你想要完成的例子嗎? – Arend 2011-06-02 09:25:04

+0

你知道阿倫德和亞當給你唯一的「正確」的答案,你會得到,對嗎? – jcolebrand 2011-06-05 22:33:50

回答

7

如果您不想使用ajax,那麼在提交後無法可靠地調用某些東西 - 表單的處理完成。如果您想要回復,您必須使用ajax。

如果你想在你的表單提交之前調用你的函數 - 再次..你必須使用某種形式的ajax。

How do I capture response of form.submit

如果你真的需要像這樣的活動的控制 - 你需要AJAX或iframe黑客。對不起:)

0

也許你的行動可以返回一個URL變種,像?status=submitted

然後檢查你的javascript是否存在var,如果是的話,觸發你的completedCallback

順便說一下,如果您不想要提交表格​​,您應該在$(form).submit(function(){return false;});中返回false

+0

歡迎來到StackOverflow ju k!在內聯代碼(在文本中)編寫代碼時,您可以用反勾號將代碼包圍起來,以避免它與常規文本顯示爲相同的字體。例如,如果你點擊編輯你的答案,你會看到我爲你添加了他們的位置。 :) – 2011-06-06 18:52:08