首頁 >後端開發 >php教程 >下載請求不能放在ajax裡發送的原因

下載請求不能放在ajax裡發送的原因

零到壹度
零到壹度原創
2018-04-10 09:44:181643瀏覽

這篇文章給大家分享的內容是下載請求不能放在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 = &#39;/media&#39;;

這次點擊下載就出現如下理想效果。


然後總結為什麼下載請求不能放在ajax裡發送:

原因:因為response原因,一般請求瀏覽器是會處理伺服器輸出的response,例如產生png、檔案下載等,然而ajax請求只是個「字元型」的請求,即請求的內容是以文字類型存放的。檔案的下載是以二進位形式進行的,雖然可以讀取到傳回的response,但只是讀取而已,是無法執行的,說白點就是js無法呼叫到瀏覽器的下載處理機制和程式。

相關推薦:

不能用ajax請求下載檔案

Ajax請求無法下載檔案的原因

檔案下載不能使用ajax的替代解決方案

###############

以上是下載請求不能放在ajax裡發送的原因的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn