PHP中,用header("Content-type: application/json");设置响应类型后,$.get()和$.getJSON都不能获得响应数据,也无法调用回调函数;但是去掉在php那边的header("Content-type: application/json")后就能正常获得数据了,怎么解决设置了响应类型的同时,jQuery能正常获得响应数据?
js
php
PHP中,用header("Content-type: application/json");设置响应类型后,$.get()和$.getJSON都不能获得响应数据,也无法调用回调函数;但是去掉在php那边的header("Content-type: application/json")后就能正常获得数据了,怎么解决设置了响应类型的同时,jQuery能正常获得响应数据?
js
php
你这上面设置了 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 等诸多函数输出结果的用法。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
首先要了解 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