ajax导出表格数据失败的几处坑

时间:2024-05-23 13:33:44
$.ajax({
type:'POST',
async:false,
url:'/export',
data:params,
dataType:'json',
...
success:function(jsonData){
//不执行success
   window.location.href = '/export?index='+index; //第一种方式
   window.open('/export?index='+index,'_self'); //第二种方式
  },
error:function(error){
//总是执行这个error
}
}); 一、jquery 1.4以后对json格式变严格了,也就是说必须要这种格式的{"键":"值","键":"值"};像原来的{键:值,键:值}和{'键':'值','键':'值'}这种都是错误的,不合标准,所以jquery返回error。
  当dataType类型指定为json之后,要求比较严格,必须是标准的键值对格式,而后台并未做任何返回值,因此直接执行error.
二、ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,ajax没法解析后台返回的文件流,所以无法处理二进制流response输出来下载文件
  使用window.location.href=dataUrl;就可以实现
Ajax直接调用后台的下载方法是导出不了文件的,原因是ajax无法接收后台的文件流