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 相关文章推荐
PHP高级OOP技术演示
Aug 27 PHP
php 输出双引号"与单引号'的方法
May 09 PHP
微盾PHP脚本加密专家php解密算法
Sep 13 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
Laravel 5框架学习之数据库迁移(Migrations)
Apr 08 PHP
项目中应用Redis+Php的场景
May 22 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
thinkPHP5框架中widget的功能与用法详解
Jun 11 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 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
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python Socket编程入门教程
2014/07/11 Python
详解python分布式进程
2018/10/08 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
python将字母转化为数字实例方法
2019/10/04 Python
python-numpy-指数分布实例详解
2019/12/07 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
通过实例解析Python return运行原理
2020/03/04 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
应聘自荐书
2013/10/08 职场文书
学校安全检查制度
2014/01/27 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书