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

$.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无法接收后台的文件流

posted on 2019-04-29 17:11  碎片时间  阅读(306)  评论(0编辑  收藏  举报

导航