一般ajax,post请求不能实现的原因
开始的想法:在页面上用jQuery的$.post方法发送一个请求给服务器,然后服务器根据这个参数再生成相应的一个文件流返回给客户端。但是,在$.post方法的回调函数中,只能处理xml, json, script, or html类型,对返回的文件流却没办法弹出对话框让用户下载了。
另类实现方法
经过百度,看到了很多人采用隐藏form提交的方式,再用response来推就可以
function exportRecord() {
var searchData = getData();
var json = {
"sid":$.cookie('sid'),
"searchJson":searchData
};
var form = $("<form>");
form.attr('style', 'display:none');
form.attr('target', '');
form.attr('method', 'post');
form.attr('action', IP+'exportRecord.do');
var input1 = $('<input>');
input1.attr('type', 'hidden');
input1.attr('name', 'json');
input1.attr('value',JSON.stringify(json));
$('body').append(form);
form.append(input1);
form.submit();
form.remove();
}
这种方法发出的请求格式类似于username=username&password=password. 代码中的name就是请求中的key,代码中的value就是请求数据中的value
然后后台采用老办法,往response里写文件流,往前台推。
by:http://www.leasonlove.cn/