ajax請求導(dǎo)出excel JqueryAjax請求文件下載操作失敗的原因分析及解決辦法?
JqueryAjax請求文件下載操作失敗的原因分析及解決辦法?在前端實(shí)踐中,常常需要下載文件。 文件下載實(shí)現(xiàn)方式一般有三種: 1、服務(wù)器存放靜態(tài)文件,前端通過a標(biāo)簽來實(shí)現(xiàn)文件下載 2、通過aja
JqueryAjax請求文件下載操作失敗的原因分析及解決辦法?
在前端實(shí)踐中,常常需要下載文件。 文件下載實(shí)現(xiàn)方式一般有三種:
1、服務(wù)器存放靜態(tài)文件,前端通過a標(biāo)簽來實(shí)現(xiàn)文件下載
2、通過ajax請求,返回文件地址,前端打開文件地址,實(shí)現(xiàn)文件下載
3、通過ajax請求,直接返回文件內(nèi)容。這種方式,前端有兩種實(shí)現(xiàn)文件下載方法: a,使用Blob,把獲取文件內(nèi)容的內(nèi)存地址,再賦值到a標(biāo)簽上,觸發(fā)a標(biāo)簽點(diǎn)擊事件,實(shí)現(xiàn)下載。 b,直接把a(bǔ)jax請求轉(zhuǎn)成一個url,通過location.href=url 或 window.open(url)實(shí)現(xiàn)文件下載。這種方式的實(shí)現(xiàn),本質(zhì)上是因?yàn)?,每一個get請求,都可以看成是一個單獨(dú)的url訪問。
ajax響應(yīng)時長怎樣設(shè)置?
在項(xiàng)目中,點(diǎn)擊所有導(dǎo)出數(shù)據(jù),通過ajax的實(shí)現(xiàn),將數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)轉(zhuǎn)換為excel文件格式,可以下載到用戶。實(shí)際上,數(shù)據(jù)量非常大。ajax請求的響應(yīng)時間太長,導(dǎo)致瀏覽器長時間不響應(yīng)。有幾種方法可以解決這個問題:首先是設(shè)置ajax請求時間。測試后:服務(wù)器處理方法中的線程延遲證明超時無效,客戶端等待響應(yīng),狀態(tài)返回成功。注意,超時意味著設(shè)置請求超時時間,而不是服務(wù)器響應(yīng)時間!第二種情況是,當(dāng)您返回數(shù)據(jù)時,嘗試返回不太大的數(shù)據(jù)的字節(jié),這可以單獨(dú)傳輸。
jquery實(shí)現(xiàn)下載文件?
通過jquery異步,后臺將datatable數(shù)據(jù)寫進(jìn)excel,然后生成excel文件保存到服務(wù)器,然后返回文件名到前臺,提示是否下載文件即可,參考代碼如下:
// Ajax 文件下載
jQuery.download = function (url, data, method) {
// 獲取url和data
if (url && data) {
// data 是 string 或者 array/object
data = typeof data == "string" ? data : jQuery.param(data)
// 把參數(shù)組裝成 form的 input
var inputs = ""
jQuery.each(data.split("&"), function () {
var pair = this.split("=")
inputs = ""
})
// request發(fā)送請求
jQuery("
").appendTo("body").submit().remove()
}
}