Ajax請求文件下載操做失敗的緣由和解決辦法

使用Poi作excel表格導出功能,第一個想到的就是用Ajax來發送請求,可是Ajax和後臺代碼都執行了,就是沒法下載文件。ajax

前臺代碼

 1 function exportExl(){
 2             var form = $("input:hidden").serialize();
 3             $.ajax({
 4                 url: 'ReportStatistics/exportExcelProcurement.do',
 5                 type: 'GET',
 6                 //dataType: 'json',
 7                 data: form,
 8                 error: function(XMLHttpRequest, textStatus, errorThrown) { 
 9                     alert(XMLHttpRequest.status); 
10                     alert(XMLHttpRequest.readyState); 
11                     alert(textStatus); 
12                     }, 
13                 success:function(data){
14                     console.log("success");
15                 }
16             });

失敗的緣由:

那是由於response緣由,通常請求瀏覽器是會處理服務器輸出的response,例如生成png、文件下載等,然而ajax請求只是個「字符型」的請求,即請求的內容是以文本類型存放的。文件的下載是以二進制形式進行的,雖然能夠讀取到返回的response,但只是讀取而已,是沒法執行的,說白點就是js沒法調用到瀏覽器的下載處理機制和程序。json

解決方案:

使用 window.location.href  改變當前頁面的url進行跳轉下載。
瀏覽器

 

1 function exportExl(){
2             var form = $("input:hidden").serialize();
3             window.location.href = "ReportStatistics/exportExcelProcurement.do?"+form;
4         }
相關文章
相關標籤/搜索