博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
输出 JSON 数据时的 Content-Type
阅读量:6380 次
发布时间:2019-06-23

本文共 837 字,大约阅读时间需要 2 分钟。

导语

缘由是这样的,给前端返回 json 数据,反馈说数据不对(前端是在原代码基础上复制修改的,去掉 jsonp)。看了下后端代码,发现是两次返回 json 的代码不同。但这不是问题的原因,然后再一看 JS 代码,是前端没有进行转换。也正好借此机会,看了下平时没有注意到的点。

分析

日常写代码,返回一些简短数据的时候,没有使用框架封装的方法,如下

exit(json_encode(['message' => 'test']));

这时候响应头的 Content-Typetext/html

如果用框架(ThinkPHP 3.0)的返回方式,

$this->ajaxReturn(['message' => 'test']);

这时候响应头的 Content-Typetext/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-Typetext/html; charset=utf-8,这时用 typeof 函数打印返回值,是 object 类型,这也是之前代码没有问题的原因。或者使用 JSON.parse() 转换一下返回值,也是可以的。当然最稳妥的方案还是后端设置 Content-Typeapplication/json


参考资料:。

转载地址:http://cwhqa.baihongyu.com/

你可能感兴趣的文章
vim:去掉响铃
查看>>
Spring 小示例
查看>>
MySql清空表的方法介绍 : truncate table 表名
查看>>
codeforces水题100道 第四题 Codeforces Round #105 (Div. 2) A. Insomnia cure (math)
查看>>
Zabbix-3.0.3结合Grafana-3.1.0给你想要的绘图
查看>>
利用 SPL 快速实现 Observer 设计模式: SplSubject 、SplObserver与SplObjectStorage【转】
查看>>
C\C++ 1A2B小游戏源码
查看>>
【SDK fix】iOS 8下将UIButton放置于tabbar位置无法响应event
查看>>
Android项目实战(三十八):2017最新 将AndroidLibrary提交到JCenter仓库(图文教程)...
查看>>
地平线“小目标”:2025年,三千万汽车搭载地平线自动驾驶BPU
查看>>
“2016大数据技术与应用人才培养研讨会” 在泸州成功召开
查看>>
大数据和数字化转型
查看>>
如何知道自己的CPU支持SLAT
查看>>
客户端在使用citrix应用如何开启本地输入法
查看>>
C# 一个字符串是否在另外一个字符串数组里 Array.Exists 的用法 Array.IndexOf 用法...
查看>>
delphi实现计算器
查看>>
CentOS7 网卡命名
查看>>
如何在Hudson上集成sonar来实现代码质量控制
查看>>
Django进阶之缓存和信号
查看>>
DataGridView 设定单元格只读:
查看>>