2012-09-10 71 views
1

所有,HTML表單調用返回附件的PHP頁面;我如何將「控制」返回到HTML頁面?

我有一個包含一個表單的HTML頁面。

當用戶完成表單並點擊「提交」 - 表單將用戶的輸入發佈到PHP頁面。

該PHP頁面處理輸入並返回用戶的結果作爲附件

到目前爲止 - 一切正常OK - 用戶點擊「提交」,瀏覽器的進度條開始「旋轉」,幾秒鐘後,該附件下載。

但是,在瀏覽器中 - 用戶仍在窗體頁面上。對我來說沒問題。

所以 - 這是我的問題。理想情況下,當用戶點擊「提交」時 - 我想更新表單頁面以表明「進程」正在進行中。例如,

  • 禁用提交按鈕,以防止重複點擊
  • 顯示一個「下載」消息和「微調」型圖形

然後,當下載完成後 - 我喜歡捕獲該事件,以便我可以重新啓用提交按鈕並刪除下載消息。

這可能嗎?

或者 - 我的初始設置是否錯誤?有一個更好的方法嗎? (那就是 - 有一個調用PHP頁面的表單,有PHP頁面返回一個附件,然後將控制返回到調用頁面?)提前爲您的意見和見解

謝謝!

回答

1

使用javascript在新窗口中打開下載。因此,不要在POST請求中返回下載,只需讓頁面重新加載並在頁面上放置一些JavaScript,即可打開一個新窗口,該窗口將調用將下載該文件的PHP腳本。

1

我不知道會有關於下載/任何情況下通過HTTP流媒體文件(認爲它完全發生在服務器端),但是,如果我是你,我會重定向形式的下載頁面,那麼在Web服務器開始將文件流式傳輸到客戶端的瀏覽器之後,我會再次重定向到表單頁面。

您可以通過PHP和Javascript實現。 :)

1

爲了獲得這種功能(禁用提交按鈕,顯示微調或進度欄),您將需要使用一些JavaScript。我會推薦JQuery Ajax Form插件:http://www.malsup.com/jquery/form/

使用JS和AJAX棘手的部分是,這將是很難讓用戶下載的文件作爲附件。

要使用純HTML和PHP,我建議重定向到上提交另一個頁面,顯示某些消息(...「處理」 ...),然後重定向回窗體頁面,該頁面將加載,提示下載,然後再次顯示錶單。

1

處理這個問題的優雅方法可能是通過ajax。

a)在當您按下「提交」按鈕,你發佈一個Ajax請求

  1. 動態生成的文檔和或生成鏈接下載 文件
  2. 返回的下載鏈接最後一頁Ajax響應

二)在Ajax響應,你觸發了下載鏈接,如

//jquery code  
$.ajax ({... 
     success:function(resp){ 
      window.open(resp.FILE); 
      // to the rest of work here 
      // e.g enable disable submit button 
     })