js 发送ajax与PHP响应的问题

发布于 2022-09-11 22:42:49 字数 397 浏览 26 评论 0

PHP中,用header("Content-type: application/json");设置响应类型后,$.get()和$.getJSON都不能获得响应数据,也无法调用回调函数;但是去掉在php那边的header("Content-type: application/json")后就能正常获得数据了,怎么解决设置了响应类型的同时,jQuery能正常获得响应数据?

js

clipboard.png

php

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

染柒℉ 2022-09-18 22:42:49

首先要了解 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

椵侞 2022-09-18 22:42:49

直接echo json_decode之后的字符串,如果是使用框架的话直接return就行了

梦晓ヶ微光ヅ倾城 2022-09-18 22:42:49

var_dump($res);改为exit($res);

長街聽風 2022-09-18 22:42:49

clipboard.png

你这上面设置了 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 等诸多函数输出结果的用法。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文