一般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/