post請求下載excel文件解決方法
阿新 • • 發佈:2018-12-06
post請求無法直接傳送請求下載excel文件,是因為我們在後臺改變了響應頭的內容:
Content-Type: application/vnd.ms-excel
導致post請求無法識別這種訊息頭,導致無法直接下載。
解決方法:
改成使用form表單提交方式即可
/*===================post請求下載檔案
* options:{
* url:'', //下載地址
* data:{name:value}, //要傳送的資料
* method:'post'
* }
*/
var postDownLoadFile = function (options) {
var config = $.extend(true, { method: 'post' }, options);
var $iframe = $('<iframe id="down-file-iframe" />');
var $form = $('<form target="down-file-iframe" method="' + config.method + '" />');
$form.attr('action', config.url);
for (var key in config.data) {
$form .append('<input type="hidden" name="' + key + '" value="' + config.data[key] + '" />');
}
$iframe.append($form);
$(document.body).append($iframe);
$form[0].submit();
$iframe.remove();
}
//匯出
$("#btnExport_year").on('click',
function() {
var param={};
postDownLoadFile({
url:path + '/monthlyCollection/exportExcelDoc.json' ,
data:param,
method:'post'
});
});
引數直接放到param中就可以帶到後臺了,
後臺再用request.getParameterNames();
即可接受到引數