1. 使用ajax,ajax的返回值类型是json,text,html,xml类型,或者能够说ajax的发送,接受都只能是string字符串,不能流类型,因此没法实现文件下载,强用会出现response冲突。若是非要使用ajax的话,只能经过返回值获得生成的文件相关url。而后在回调函数里经过建立一个iframe,并设置其src值为文件url,或者一个对文件生成流的处理url,这样操做来实现文件下载且页面无刷新。html
2. 不使用ajax,经过dom动态操做或建立iframe,form的方式来实现,在下载文件的同时实现页面不刷新,其中iframe的src能够是文件地址url来直接下载文件,也能够是流处理url经过response流输出下载,form的是流处理url经过response流输出下载,dom动态操做的时候实现文件下载,且页面无刷新。要在下载的同时实现进度条的话,能够建立一个定时任务,每隔必定时间就向后台发送请求,经过公用的对象,好比session,来取得文件下载的处理进度。web
var title=$("input[name='gjzSelect']").val(); var rqTime = $(".ui-datepicker-time").val(); var ddd= rqTime.split("一"); var startTime=ddd[0]; var endTime=ddd[1]; var form = $("<form>"); //定义一个form表单 form.attr('style', 'display:none'); //在form表单中添加查询参数 form.attr('target', ''); form.attr('method', 'post'); form.attr('action', "<%=basePath%>jiankong/madeExcel.do"); var input1 = $('<input1>'); input1.attr('type', 'hidden'); input1.attr('name', 'startTime'); input1.attr('value', startTime); var input2 = $('<input2>'); input2.attr('type', 'hidden'); input2.attr('name', 'endTime'); input2.attr('value', endTime); var input3 = $('<input3>'); input3.attr('type', 'hidden'); input3.attr('name', 'title'); input3.attr('value', title); $('body').append(form); //将表单放置在web中 form.append(input1); //将查询参数控件提交到表单上 form.append(input2); form.append(input3); form.submit();
<%-- $.ajax({ url:'<%=basePath%>jiankong/madeExcel.do', cache:false, data:{ 'startTime':startTime, 'endTime':endTime, 'title' :title }, error:function (e){ alert("导出失败!"); }, success:function (data){ alert("导出成功!"); } }); --%>