ie下提示下载返回的json数据

情况一:在注册时先用js验证数据然后使用ajax提交,返回json,在chrome里正常,在ie里就提示下载。

解决方法:

        这个提交虽然用的是ajax但是提交事件写在了onsubmit( )里,被当作了form提交, 返回数据被浏览器接受到了,所以只要把onsubmit改在onclick( ) 事件就可以了。

情况二: 使用ajaxfileupload文件上传组件,返回的json提示下载。后台用的是tp框架。

解决方法:

        这是因为ajaxfileupload内部使用的是伪form提交的原因,真正的ajax提交是不会有这种问题的。伪form表单提交返回的数据会被浏览器接受,而浏览器对于不识别的类型作了下载处理。但是ajax提交的返回值会被ajax接受到,所以不会提示下载。

        可以在输出时指定content-type,header("Content-Type: text/html; charset=utf-8");

        但是我后台返回数据用的是tp提供的ajaxreturn( ) 方法,没办法改变header, 只能换成echo json_encode($data); 问题解决。

以下是跟踪结果:

1. 用ajaxreturn 返回数据时的http头,content-type: application/json; 

ie下提示下载返回的json数据

2. 然后用json_encode返回的http头:content-type: text/html;

ie下提示下载返回的json数据 

因为ie对于所有不识别的类型都会提示下载,而application/json部分浏览器才识别.


转载于:https://my.oschina.net/u/912810/blog/309150