使用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 }