參考代碼如下:
_downFile: function (opts) {
// 添加遮罩
_addShade()
var xhr = new XMLHttpRequest()
xhr.open(opts.method || 'POST', opts.url, true)
xhr.responseType = 'blob'
xhr.setRequestHeader('Content-Type', 'application/json')
var formData = new FormData()
for (var i in opts.data) {
formData.append(i, opts.data[i])
}
// 定義請求完成的處理函數(shù),請求前也可以增加加載框/禁用下載按鈕邏輯
xhr.onload = function () {
// 請求完成
if (this.status === 200) {
var blob = this.response
var a = document.createElement('a')
var objectUrl = window.URL.createObjectURL(blob)
a.download = opts.nofix ? opts.fileName : opts.fileName + (opts.postfix || '.xlsx')
a.href = objectUrl
$('body').append(a)
a.click()
window.URL.revokeObjectURL(objectUrl)
$(a).remove()
_removeShade()
}
}
// 發(fā)送ajax請求
xhr.send(JSON.stringify(opts.data))
}