内容简介:缘由是这样的,给前端返回 json 数据,反馈说数据不对(前端是在原代码基础上复制修改的,去掉 jsonp)。看了下后端代码,发现是两次返回 json 的代码不同。但这不是问题的原因,然后再一看 JS 代码,是前端没有进行转换。也正好借此机会,看了下平时没有注意到的点。日常写代码,返回一些简短数据的时候,没有使用框架封装的方法,如下这时候响应头的
导语
缘由是这样的,给前端返回 json 数据,反馈说数据不对(前端是在原代码基础上复制修改的,去掉 jsonp)。看了下后端代码,发现是两次返回 json 的代码不同。但这不是问题的原因,然后再一看 JS 代码,是前端没有进行转换。也正好借此机会,看了下平时没有注意到的点。
分析
日常写代码,返回一些简短数据的时候,没有使用框架封装的方法,如下
exit(json_encode(['message' => 'test']));
这时候响应头的 Content-Type
是 text/html
。
如果用框架(ThinkPHP 3.0)的返回方式,
$this->ajaxReturn(['message' => 'test']);
这时候响应头的 Content-Type
是 text/html; charset=utf-8
。看了源码,是有这行代码的
header('Content-Type:text/html; charset=utf-8');
结论
实际上,json 数据是有特定的 Content-Type
,是 application/json
。后来又去看了 Laravel ,返回 json 的时候, Content-Type
就是 application/json
。出现这样的问题,是因为自己不够严谨,而且使用的框架有些老旧。
补充一下,后来又看了前端的代码。实际上用 JQuery 封装的 ajax 方法, dataType
设置为 jsonp
或者 json
,都可以自动转换为 json 格式,即使 Content-Type
是 text/html; charset=utf-8
,这时用 typeof
函数打印返回值,是 object
类型,这也是之前代码没有问题的原因。或者使用 JSON.parse()
转换一下返回值,也是可以的。当然最稳妥的方案还是后端设置 Content-Type
为 application/json
。
参考资料: Content-Type 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 多种格式数据输出
- (一)C语言之基本数据类型、输入输出、指针
- java – 将数据从一个输入流传输到多个输出流的最佳方法
- 数据生成工具 ZenData 发布 1.5 版本,新增 CSV 和 Excel 输出格式,字段定义支持表达式
- EFK 配置geo-ip落地实践(三)经纬度数据查询及格式化输出
- 2. Python中的基本输入、输出、格式化输出
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX环境高级编程
W.Richard Stevens、Stephen A.Rago / 尤晋元、张亚英、戚正伟 / 人民邮电出版社 / 2006年 / 99.00元
本书是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的更新版。在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息......一起来看看 《UNIX环境高级编程》 这本书的介绍吧!