2014-04-30 22 views
0

是否可以使用HTML中的不同操作多次提交表單。即是否可以使用不同的操作多次提交表單?

document.forms[0].action = "action1.do"; //It insert the data into database and redirect to other page in same tab. 
document.forms[0].submit(); 

document.forms[0].action = "action2"; // Its generate a report with data inserted by action1 in new tab. 
document.forms[0].target = "_blank"; 
document.forms[0].submit(); 

形式提交兩次,但問題是第二個被第一個完成之間提交英寸

請幫助我如何確保第二次表單提交將在第一次完成後纔會發生。

+0

你有JavaScript攔截提交,然後將數據發佈到多個腳本,但它似乎是錯誤的方式來做到這一點。我認爲最好是正常發佈到服務器上的一個腳本,並執行多個任務。 –

+0

從您的動作servlet發送類似「成功」的響應,直到此時禁用該表單並在接收到響應時啓用它 – Shadow

+0

爲什麼要提交兩次? – putvande

回答

1

您需要發送表單提交作爲ajax請求,並在您執行時禁用表單。一旦請求響應,然後在回調中啓用表單/發送下一個請求/等。

0

提交是異步的:如果您進行提交,JS將繼續運行,瀏覽器在後臺執行操作。 (但它會複製表單,因此您可以安全地執行所做的操作。)現在,如果您想要等待第一個操作完成,然後提交第二個操作,則有幾個選項,其中最優雅的是az AJAX調用,使用jQuery,是這樣的:

var formData = $("form").serializeArray(); 
$.post("http://whatever.xxx", formData, function() { 
    // 
    // here's your callback! 
    // you want do the second submit here. 
    // 
}); 

在$。員額()調用的回調函數,你讓對方就範。問題解決了。

+0

嗨dkellner,謝謝你的回覆。我嘗試過,但它不工作,因爲我發送multipart/form-data到我的操作。 – user3035077

+0

這是一個答案... http://stackoverflow.com/questions/5392344/sending-multipart-formdata-with-jquery-ajax – dkellner

相關問題