PHP作为后端时,前端js使用ajax技术进行相互信息传送时,经常会出错误,对于新手来说有些手足无措。总结错误、经验,以后随时回顾。

第一个问题,当前端无错误的情况下,页面调试也显示没有问题,但是ajax获取不到后端php文件发送过来的信息:
前端代码如下:
$.ajax({
url:'1.php',//目的php文件
data:{"age":12,"name":'zh'},//传送的数据
type:‘post',//方式post/get
dataType:'json',//数据传送格式
success:function(response)
{
console.log(response);
},
error:function(response)
{
console.log(response);
console.log("错误");
}
});
php后端代码如下:
$postAge = $_POST['age']; $postName = $_POST['name']; echo $postAge; echo $postName;
页面出现后,F12调试查看如下所示:
状态码都没问题,status是200,responseReady是4,说明在html发送给php文件信息过程是没有问题的。而且php也返回了信息。可是为什么程序走了error而没有走success呢?
这时需要小心!由于php后端多个echo没有把数据整理为json格式。也就是说php返回的是一个字符串不是json格式的数据。有人说加上json_encode()呢?这样也是不行的,因为json_encode()的函数作用没搞清,百度仔细看下。json_encode()与json_decode()是一对。
json_encode(json),把json整理为json格式的数据。在上例中,就算php后端代码改写为:echo json_encode(postAge);和echojsonencode(postName);也是不对的。因为这样仅仅是把单个postAge和postName整理为了json格式,但是由于是2个返回,既是2个response,在浏览器调试页面也可以看到1个post回来2个response。这样导致2个json格式的数据返回给前端是就不再是json格式的数据(我理解为json污染,方便理解)。也就是单个数据是json格式但是多个json格式数据“胡乱”结合在一起不按照json格式合并在一起就会产生“污染”。导致整体数据格式混乱无法被识别,这种情况者数据处理和传输时随时都见得到。
json_decode(json,true/false)函数是把json整理为数组或者object(理解为类)。true是强制装换为(关联)数组,false是默认的会转换为object形式的数据。
回到本文提出的例子上。
既然传送回来的数据不再是json格式的数据,那么就是dataType的问题了。
dataType是告诉浏览器检查传送的数据格式。如果不写,浏览器不会去检查数据格式,写了就一定检查而且必须满足格式要求。本例中,由于写了为json格式,但是传回来时不是json格式,所以浏览器认为传输过程中出现了错误,所以走了error而没有走success。
这时最好的方式是修改php代码,将echo的内容改为一个数组,用数组的信形式把整体数据整理为json格式进行传送(json_encode),避免发生错误。
当然也可以使用另一种方法,类似作弊的方法,直接注释掉(或者不写)dataType,这样浏览器就不会去检查数据的形式而是根据数据的形式智能的判断,类似蒙混过关。
以下是dataType的W3school解释:
值得注意的是,后端php文件中多个echo输出后,数据返回确是一起返回的,既是修改正确后,前端得到的数据是2个数据合为一个字符串的形式数据。本例子中得到的数据是12zh。
当然还有很多细节问题了,比如php后端只能用echo或者die(),不能用return,这是因为return是只在服务器端中返回数据使用,而echo是打印数据,将数据从服务器端打印出来,给前端。return只能在服务器端,或者前端单一的返回。而die()的强大就不提了,直接终止后端php程序的形式返回数据。
还有比如在$,ajax({});中每一行既是一个参数,参数之间是逗号隔开,多个数据是在{}内,隔开是用逗号等等。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# PHP
# 使用ajax时常见错误
# ajax常见错误整理
# 详解ajax的data参数错误导致页面崩溃
# 快速解决ajax请求出错状态码为0的问题
# 完美解决ajax跨域请求下parsererror的错误
# ajax跨域访问报错501的解决方法
# jQuery中ajax错误调试分析
# Ajax向后台传json格式的数据出现415错误的原因分析及解决方法
# Ajax犯的错误处理方法
# js ajaxfileupload.js上传报错的解决方法
# 解决ajax返回验证的时候总是弹出error错误的方法
# Jquery Ajax Error 调试错误的技巧
# django使用ajax post数据出现403错误如何解决
# Ajax报错400的参考解决办法
# 后端
# 多个
# 的是
# 走了
# 就不
# 写了
# 数据格式
# 会去
# 不写
# 就会
# 是在
# 第一个
# 最好的
# 蒙混过关
# 是由
# 都没
# 希望能
# 可以看到
# 仅仅是
# 这种情况
相关文章:
非常酷的网站设计制作软件,酷培ai教育官方网站?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
微信小程序 input输入框控件详解及实例(多种示例)
已有域名和空间如何搭建网站?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
建站之星备案流程有哪些注意事项?
如何注册花生壳免费域名并搭建个人网站?
企业微网站怎么做,公司网站和公众号有什么区别?
如何获取上海专业网站定制建站电话?
建设网站制作价格,怎样建立自己的公司网站?
如何用IIS7快速搭建并优化网站站点?
如何在Golang中指定模块版本_使用go.mod控制版本号
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
成都网站制作报价公司,成都工业用气开户费用?
如何快速重置建站主机并恢复默认配置?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何正确下载安装西数主机建站助手?
建站OpenVZ教程与优化策略:配置指南与性能提升
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
如何高效完成自助建站业务培训?
C#如何序列化对象为XML XmlSerializer用法
建站之星免费模板:自助建站系统与智能响应式一键生成
独立制作一个网站多少钱,建立网站需要花多少钱?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
如何用y主机助手快速搭建网站?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
建站之星如何助力网站排名飙升?揭秘高效技巧
如何选择服务器才能高效搭建专属网站?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何高效利用亚马逊云主机搭建企业网站?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
历史网站制作软件,华为如何找回被删除的网站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
网站网页制作专业公司,怎样制作自己的网页?
做企业网站制作流程,企业网站制作基本流程有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。