2012-01-10 43 views
0

我有一個HTML表單。提交後,它會創建一個Excel文件並將其返回。 在所有其他形式中,我有一個onSubmit函數中顯示的加載屏幕,並隱藏在document.ready函數中,但是當文件返回時,沒有document.ready,因此我的加載屏幕不會隱藏。jQuery加載屏幕上的表單提交文件回覆

我試過帶回調函數的jQuery表單插件,但這樣我無法正常顯示其他表單上的響應頁面。帶回調的$.post()函數也是如此。

我想要的只是在表單提交完成時調用我的loadingScreenHide函數,並且正常情況下保留其餘部分。

任何想法?

謝謝。

代碼我tryed是這樣的: 與形式的插件回調函數(返回true;似乎沒有工作): $( '形式')給ajaxForm(函數(){activateDeactivateScreen( '隱藏');返回true; }); ('form')。attr('action'),$('form')。serialize(),function(){activateDeactivateScreen('hidden');返回true;});

2個主要問題是當我使用正常提交我沒有回調,當我得到一個回調,我不具備正常的提交/頁面加載

我也不得不改變我的Java服務器頁面中的想法保存文件和臨時重定向到一個下載,但這樣一來我就必須改變大約20-30 Java源代碼,所以我希望能有一個JavaScript的解決方案

+0

您可以發佈您的代碼,以便我們可以看到您使用的過程。 – 2012-01-10 11:04:51

+0

我假設您將表單數據發佈到PHP腳本或任何其他服務器端CGI。它處理你的數據並返回一個application/excel mimetype,它強制下載,因爲瀏覽器不能解析exel文件。所以你發送的實際頁面將不會改變。據我所見,你必須通過AJAX發送你的數據,並暫時將你的exel文件保存在你的服務器上,並返回一個指向你AJAX調用成功方法的鏈接。這個鏈接可以用'document.location = link;'打開,然後再次強制下載。 – buschtoens 2012-01-10 11:33:29

+0

@silvinci:我從許多不同的頁面獲取這些excel文件(20-30個不同的servlet),所以更改java源文件將會是很多工作 – Georg 2012-01-10 12:29:09

回答

0

指定的ajaxSetup

$.ajaxSetup({ 
complete:function(){ 
$("#loadingScreenID").hide(); 
} 
}); 

一個完整的回調和之後定期發帖

$.post(); 
+0

當我使用$ .post()函數加載屏幕的作品,但文件isn不會顯示下載或我的其他表單不會重定向到他們的回覆頁面。這怎麼可能呢? – Georg 2012-01-10 12:08:18

+0

請參閱@silvinci評論 – Rafay 2012-01-10 12:15:45