IE ajax文件上传 render(new JsonRender(params).forIE())跳转页面

layui+jfinal,参照文档里的做法避免在ajax上传文件完成后返回json时IE提示下载文件,使用render(new JsonRender(params).forIE(),但是返回不走ajax的回调函数,而是跳转页面展示返回内容,多方查询无解,求助~


评论区

miracle佐

2018-09-21 15:23

前端部分代码:$.ajax({
url: data.form.action,
type: 'post',
data: formData,
// cache: false,
processData: false,
contentType: false,
success: function (res) {}
后端重写renderJson:
@Override
public void renderJson(Object object) {
String userAgent = getRequest().getHeader("User-Agent");
if (userAgent.toLowerCase().indexOf("msie") != -1 || userAgent.toLowerCase().indexOf("rv:11") > -1) {
render(new JsonRender(object).forIE());
} else {
super.renderJson(object);
}
}

JFinal

2018-09-21 17:20

如果不是 ajax 文件上传,不用这么来用,直接 renderJson 即可

miracle佐

2018-09-25 15:58

@JFinal 是这样的波总,前台用的formdata接收表单数据,并没有上传文件,但是因为formdata里数据比较杂,之前后台通过getParaValues获取不到数据,网上查询后在后台action中先执行getFiles(),高版本谷歌和火狐浏览器是没问题的,在IE和低版本谷歌中getFiles()报错,并且rederJson在IE浏览器是返回提示下载文件的.json文件,所以通过重写renderJson来避免这种情况,但是又出现跳转页面来展示返回值(类似表单submit提交)并没有走ajax的回调函数

热门反馈

扫码入社