打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IE下使用ajaxreturn返回JSON数据提示下载的问题
thinkphp新版设置了ajaxreturn方法如果是JSON格式会自动设置头信息为JSON格式,这样做在谷歌下可以正常解析,但是在IE和OPERA浏览器下就会提示下载,从而导致程序出错,修改方法如下
thinkphp新版设置了ajaxreturn方法如果是JSON格式会自动设置头信息为JSON格式,这样做在谷歌下可以正常解析,但是在IE和OPERA浏览器下就会提示下载,从而导致程序出错,修改方法如下
打开:ThinkPHP/Lib/Core/Action.class.php
查找到代码:
  1. header('Content-Type:application/json; charset=utf-8');
复制代码
修改为:
  1. header('Content-Type:text/html; charset=utf-8');
复制代码
总共有两处。
另外,建议官方不要多此一举,text/html所有浏览器都支持,而application/json只有新型浏览器支持,会造成很多不必要的麻烦,[兼容很重要]。

QQ截图20130528152452.png ( 21.83 KB 下载:141 次 )

评论(21) 相关
回复21hujinlong10月26日
顶你!
回复李勇09月02日
直接换成json_encode就ok了
回复qiaoyinqian07月24日
谢谢大师指点迷津。这个问题坑死我了,害的我弄了一上午。
回复大漠05月23日
应该单独判断一下jquery.form.js提交的场景
加入以下判断
if(strpos($_SERVER['CONTENT_TYPE'],'form-data')!=false){
$type = 'EVAL_FOR_JSON';
}
最后添加一种输出
case 'EVAL_FOR_JSON' :
// 返回可执行的js脚本
header('Content-Type:text/html; charset=utf-8');
exit(json_encode($data));
这样就区分开了普通ajax调用和伪form提交
回复雨幻04月09日
我也遇到这个问题,MAKE一下
回复mochong04月08日
建议不要更改header,我是新增了一个text的type类型。
回复mochong04月08日
我也遇到这个问题。ff和chrome没问题,IE11下有问题,会提示返回的json是保存还是下载。通过submit提交。
回复zzw1228662013年09月08日
楼主大神,,,用过swfupload没有啊,,给讲讲呗,,,拜谢了!!
回复balx2013年08月12日
你是通过ajax+iframe吧
回复凌云_phpjishu.com2013年08月16日
不是
回复kxy0002013年08月05日
技术不熟练,用了一个ajxaupload,也改了这个头部声明,不然太麻烦。。。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
thinkphp处理jQuery EasyUI form表单问题
ThinkPHP的ajaxReturn
js 初始化日期格式兼容性问题
常用的前端调试工具
ThinkPHP中ajax使用实例教程
AJAX返回
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服