分享一個導出Excel時頁面不跳轉的小技巧

    今天在點擊客戶檔案導出的時候,發現先是打開了一個新標籤,然後新標籤自動關掉,彈出一個文件下載確認的窗口,點擊確認後開始下載導出的Excel文件。這樣的過程感覺窗口閃來閃去,而且可能會給用戶帶來困惑,是一種不好的體驗。

    檢查了一下代碼,發現這跟採用服務端導出數據的處理方式有關係,本身整個過程的原理是客戶端用POST方式提交表單到服務端,target屬性設爲空,服務端查詢出要導出的數據並且組織成數組並生成header信息爲文件,內容類型爲application/vnd.ms-excel的響應信息返回(具體的頭信息見附圖)。所以這裏的原因在於發送導出Excel請求的form中的target屬性設置爲_blank,這個屬性如果不設置,用默認的屬性時會導致本身正在訪問的頁面跳轉,是不可行的,那指定到本頁面的一個隱藏的iframe裏呢?經過試驗,果然成功了。

  具體的實現方法,先在導出Excel的頁面里加一個隱藏的iframe,示例代碼:<iframe src="about:blank" name="hiddenIframe" class="hide"></iframe>

  導出按鈕生成的發送請求的表單的示例代碼:

var tempForm = $('<form action="/gate/customer/export/shopsCustomer.php" target="hiddenIframe"></form>');
					$('body', document).append(tempForm);
					tempForm.submit();
  注:表單的target屬性是與iframe的name屬性對應的。

  附圖:頭信息的變化








  友情鏈接:井田商學院

  

發佈了70 篇原創文章 · 獲贊 64 · 訪問量 45萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章