這篇文章給大家分享的內容是下載請求不能放在ajax裡發送的原因,有著一定的參考價值,有需要的朋友可以參考一下
最近在做文件下載,後台寫了個控制層,直接走進去應該就可以下載文件,各種文件圖片,excel等
但是起初老是下載失敗,並且彈出下面的亂碼:
#前台請求代碼:
$('#fileexcel').unbind('click').bind('click',function(){ alert("我要下载了"); $.ajax({ type:'post', url:'media', data:null, async:true, success : function(msg){ alert(msg); } }) })
看起來似乎沒有任何問題,但就不能下載。
本來認為是後台程式碼有問題,但將網路上的各種demo放進去還是有問題。
在坑了一天後,終於發現問題所在了。
那就是請求方式有問題,檔案下載的請求是不能寫在ajax裡面的!
寫成下面這樣的就可以了:
<a href="/media">点击下载Excel</a> 或者 location.href = '/media';
這次點擊下載就出現如下理想效果。
然後總結為什麼下載請求不能放在ajax裡發送:
原因:因為response原因,一般請求瀏覽器是會處理伺服器輸出的response,例如產生png、檔案下載等,然而ajax請求只是個「字元型」的請求,即請求的內容是以文字類型存放的。檔案的下載是以二進位形式進行的,雖然可以讀取到傳回的response,但只是讀取而已,是無法執行的,說白點就是js無法呼叫到瀏覽器的下載處理機制和程式。
相關推薦:
###############以上是下載請求不能放在ajax裡發送的原因的詳細內容。更多資訊請關注PHP中文網其他相關文章!