jQuery中ajax错误调试分析


Posted in Javascript onDecember 01, 2016

jQuery中把ajax封装得非常好。但是日常开发中,我偶尔还是会遇到ajax报错。这里简单分析一下ajax报错

一般的jQuery用法如下,ajax通过post方式提交"汤姆和老鼠"这段数据到xxx.php文件中。成功后则打印返回的数据,失败则打印错误原因。

$.ajax({
 url:"xxx.php",
 type:"post",
 datatype:"json",
 data:{"cat":"tom","mouse":"jack"},
 success:function(data){
 console.log(data);
 },
 error:function(jqXHR,textStatus,errorThrown){<br> console.log(jqXHR.);<br> console.log(textStatus);<br> console.log(errorThrown);<br> }
});

根据jQuery官方文档,ajax中error有三个参数,分别是 jqXHR,textStatus,errorThrown。

而jqXHR中也有四个属性,

1.readyState :当前状态,0-未初始化,1-正在载入,2-已经载入,3-数据进行交互,4-完成。

2.status  :返回的HTTP状态码,比如常见的404,500等错误代码。

3.statusText :对应状态码的错误信息,比如404错误信息是not found,500是Internal Server Error。

4.responseText :服务器响应返回的文本信息

textStatus和errorThrown都是字符串类型,分别是返回的状态和服务器的错误信息。

一般情况下,ajax走进error的函数里,把textStatus和jqXHR.readyState打印出来,大概就知道为什么ajax报错了。如果还是不清楚的话,就把所有参数都打印出来。

这里总结一下ajax错误遇到的情况,以后遇到新的特殊情况再补充。

案例1

问题:前端使用jQuery框架,用到ajax与后端交互,后端是php+mysql。发现ajax报错(ajax采用post类型,json格式,请求数据为Json对象),打印textStatus是“parsererror”,意为解析错误。

处理:这个打印说明ajax已经与后端(服务器端)交互成功,后端响应并返回了文本信息。但是前端接受到这个文本后解析错误。这时候我首先需要看到后端响应的文本信息。有两种方式,一种是打印jqXHR.responseText,第二种在谷歌浏览器(其他浏览器也可以)F12下NetWork查看。这时候看到的信息是 5{“status”:“success”}  。不难看出,这个文本中包含了一个json对象的数据,但是不是一个完整json数据。错误发现了,直接去php文件修改相应信息,把多余的打印去除。解决问题。 另外,一个不合格的json对象数据也会导致该问题。例如{'status':'success'}数据中是单引号。

案例2

问题:前端使用jQuery框架,用到ajax与后端交互,然后让后端操作数据库,后端是nodejs。发现ajax无响应,没有走进success的回调函数,也没有走进error的回调函数。

处理:首先检查功能有没有实现,发现后端其实是做了处理,数据库已经完成相关修改操作。那问题就很清楚了,后端处理完以后没有给前端响应。在后端处理完后加上相关响应代码即可解决,由此可知,ajax的错误状态码,其实都是后端发送过来的。

 以上是个人开发过程中遇到的问题及处理总结,若有不正之处,望提出指正,万分感激!

以上就是本文的全部内容,希望对大家有所帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JQuery 学习笔记 element属性控制
Jul 23 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
Jan 09 Javascript
Textarea与懒惰渲染实现代码
Jan 04 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
js中方法重载如何实现?以及函数的参数问题
Aug 01 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
jQuery中insertBefore()方法用法实例
Jan 08 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
Sep 15 Javascript
Node.js安装配置图文教程
May 10 Javascript
vue下跨域设置的相关介绍
Aug 26 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
qrcode生成二维码微信长按无法识别问题的解决
Apr 04 Javascript
JQuery学习总结【二】
Dec 01 #Javascript
Vue.js第二天学习笔记(vue-router)
Dec 01 #Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
Dec 01 #Javascript
Vue方法与事件处理器详解
Dec 01 #Javascript
简单理解vue中实例属性vm.$els
Dec 01 #Javascript
jsp 自动编译机制详细介绍
Dec 01 #Javascript
基于vue.js实现图片轮播效果
Dec 01 #Javascript
You might like
PHP的ASP防火墙
2006/10/09 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
2010/02/16 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
php中的依赖注入实例详解
2019/08/14 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
js浮动图片的动态效果
2013/07/10 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
python实现的简单抽奖系统实例
2015/05/22 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
高考考python编程是真的吗
2020/07/20 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
1000字打架检讨书
2014/11/03 职场文书
2014年化验室工作总结
2014/11/21 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
2019银行竞聘书
2019/06/21 职场文书
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL