PHP 中使用ajax时一些常见错误总结整理


Posted in PHP onFebruary 27, 2017

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调试查看如下所示:

PHP 中使用ajax时一些常见错误总结整理

状态码都没问题,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 中使用ajax时一些常见错误总结整理

值得注意的是,后端php文件中多个echo输出后,数据返回确是一起返回的,既是修改正确后,前端得到的数据是2个数据合为一个字符串的形式数据。本例子中得到的数据是12zh。

当然还有很多细节问题了,比如php后端只能用echo或者die(),不能用return,这是因为return是只在服务器端中返回数据使用,而echo是打印数据,将数据从服务器端打印出来,给前端。return只能在服务器端,或者前端单一的返回。而die()的强大就不提了,直接终止后端php程序的形式返回数据。

还有比如在$,ajax({});中每一行既是一个参数,参数之间是逗号隔开,多个数据是在{}内,隔开是用逗号等等。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php session劫持和防范的方法
Nov 12 PHP
php自定义session示例分享
Apr 22 PHP
CI框架Session.php源码分析
Nov 03 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
May 20 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
PHP/HTML混写的四种方式总结
Feb 27 #PHP
老生常谈文本文件和二进制文件的区别
Feb 27 #PHP
php实现数据库的增删改查
Feb 26 #PHP
php查询及多条件查询
Feb 26 #PHP
php批量删除操作代码分享
Feb 26 #PHP
浅谈PHP的反射API
Feb 26 #PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 #PHP
You might like
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
Python单例模式实例详解
2017/03/01 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
python实现按关键字筛选日志文件
2019/12/24 Python
python生成大写32位uuid代码
2020/03/03 Python
Python socket处理client连接过程解析
2020/03/18 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
Python request post上传文件常见要点
2020/11/20 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
室内设计专业学生的自我评价分享
2013/11/27 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
死者家属慰问信
2015/03/24 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书