2010-02-05 41 views
2

我有一個模式窗口向用戶呈現表單。該表單還包含一個或多個文件上傳。因此我無法使用ajax提交表單。表單提交回調(使用jQuery)

目前我正在做一個提交按鈕的標準提交。當表單被提交時(通常需要幾秒鐘),生成PDF並返回下載(即Content-Disposition:附件頭)以強制下載。一旦表格數據的上傳完成,我需要關閉模態窗口。如果我直接調用close方法,提交永遠不會完成,並且文件下載永遠不會觸發(我認爲這是因爲模式窗口已從DOM中刪除)。我可以設置超時時間,但可能有n個圖像,因此上傳所需的時間是不可預知的(並且與上傳次數有關)。

我已經看過jQuery表單插件(http://jquery.malsup.com/form/#file-upload),但顯然它使用iframe來上傳文件,所以我不確定它是否會實現我所需要的。

感謝您的任何幫助,

Dom。

回答

0

重讀該問題後重寫。以下是我想嘗試的:

  1. 將表單序列化並使其成爲對話框的返回值,即將數據傳回頁面。
  2. 關閉對話框
  3. 提交的序列化形式
+0

該文件是流式傳輸的,所以我無法在文件上執行GET操作。我知道你不能用ajax做這件事,這就是我最初問的原因。 我明白理解需要在回調中調用close,它更關心的是當文件下載開始時是否有可以綁定的窗口或文檔事件。 我測試了表單插件,但後提交回調從未被觸發。預提交執行正常,表單提交罰款,文件下載,但在表單提交後沒有任何反應(即沒有提交回調)。 – Dominic 2010-02-05 02:14:14

+0

啊,重讀這個問題,並意識到你是在做一個同步POST。我想我剛剛跳過第一句話。現在我明白了爲什麼你想要暫停。編輯回覆。 – 2010-02-05 03:19:57

+0

無法序列化文件對象:( – Dominic 2010-02-05 04:00:27

1

您提到的Form plugin應該工作 - 爲什麼你懷疑它不會?

+0

我用表格插件上傳自己。隱藏的iframe定位是「ajax」上傳的標準做法。 – 2010-02-05 01:42:36

+0

我調試了表單插件,我可以得到回調工作,但模式被破壞得太快,所以請求永遠不會完成,文件不下載 – Dominic 2010-02-05 05:07:55

+0

@Dominic你不能隱藏模式而不是銷燬它嗎? – 2010-02-06 23:23:12