下载excel文档无法通过ajax的post请求来直接下载解决方法
2018-02-27 18:49
585 查看
post请求无法直接发送请求下载excel文档,是因为我们在后台改变了响应头的内容:
导致post请求无法识别这种消息头,导致无法直接下载。解决方法:
改成使用form表单提交方式即可
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
参数直接放到param中就可以带到后台了,后台再用
以下是请求例子: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);
debugger;
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();
}
//导出
$("#tableDownload").on('click',
function() {
var param={};
postDownLoadFile({
url:'../sys/advproreport/downExample',
data:{'advProJson':JSON.stringify(advProJson)},
method:'post'
});
});
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' }); });1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
参数直接放到param中就可以带到后台了,后台再用
request.getParameterNames();即可接受到参数
以下是请求例子: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);
debugger;
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();
}
//导出
$("#tableDownload").on('click',
function() {
var param={};
postDownLoadFile({
url:'../sys/advproreport/downExample',
data:{'advProJson':JSON.stringify(advProJson)},
method:'post'
});
});
相关文章推荐
- post请求下载excel文档解决方法
- post请求下载excel文档解决方法
- WebService 通过POST方式访问时候,因 URL 意外地以“/方法名”结束,请求格式无法识别 解决办法
- WebService 通过POST方式访问时候,因 URL 意外地以“/方法名”结束,请求格式无法识别 解决办法
- WebService 通过POST方式访问时候,因 URL 意外地以“/方法名”结束,请求格式无法识别 解决办法
- WebService 通过POST方式访问时候,因 URL 意外地以“/方法名”结束,请求格式无法识别 解决办法
- easyui导出excel无法弹出下载框的快速解决方法
- jquery的ajax post 方法传值到后台,无法通过HttpServletRequest得到
- ajax下载smartupload的内容无法显示汉字的解决方法
- Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
- php ajax提交post请求出现数组被截断情况的解决方法
- 解决PHP无法通过$_POST接收到AngularJS的post数据的解决方法
- ajax跨域POST时执行OPTIONS请求服务端返回403forbidden的解决方法
- Nginx直接post请求获取静态文件 返回405错误的终极解决方法
- Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
- 无法在IE窗口中直接打开OFFICE 文档的解决方法
- php下载excel无法打开的解决方法
- Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
- php下载excel无法打开的解决方法
- 网上下载的PPT文档用office打开时出错(有问题)或应用程序无法正常启动(0x0000022)的解决方法