js 发送ajax与PHP响应的问题
PHP中,用header("Content-type: application/json");设置响应类型后,$.get()和$.getJSON都不能获得响应数据,也无法调用回调函数;但是去掉在php那边的header("Content-type: application/json")后就能正常获得数据了,怎么解决设置了响应类型的同时,jQuery能正常获得响应数据?
js
php
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
首先要了解 http header 中
Content-Type
是指要发送的数据 内容类型,客户端和服务端会根据此字段判断内容类型,进而去用不同的方法解析来获取内容数据。jQuery 中
Content-Type
默认值为contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')
但是,你服务端(PHP)设置的为
Content-type: application/json
所以需要指明,jQuery 中的
contentType
值为Content-type: application/json
直接echo json_decode之后的字符串,如果是使用框架的话直接return就行了
将
var_dump($res);
改为exit($res);
你这上面设置了 Content-Type: application/json ,但是你返回的数据库呢?有一个是符合 application/json 的吗?
第一个,exit 直接退出, 当 xhr 收到 Content-Type: application/json 并不能解析。
第二个,var_dump 会输出其他额外的内容,主要是用来进行调试。
第三个,下面你又在连接失败时打印了一个字符串。
你这上面三个都不符合 Content-Type: application/json ,JS 怎么解析?轻则进入 error 回调,重则解析异常。
你得先了解,什么是 JSON, 以及 PHP 中 print,print_r,var_dump,exit,die,echo,sprintf 等诸多函数输出结果的用法。