前后端分离ajax接收文件流的实践

来源:互联网 发布:棋院围棋软件 编辑:程序博客网 时间:2024/06/06 14:20

一般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>');//将你请求的数据模仿成一个input表单    input1.attr('type', 'hidden');    input1.attr('name', 'json');//该输入框的name    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/

0 0