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 AnythingSlider滑动效果插件
Feb 07 Javascript
图片img的src不变让浏览器重新加载实现方法
Mar 29 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
js实现图片轮换效果代码
Apr 16 Javascript
js特殊字符过滤的示例代码
Mar 05 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
Feb 10 Javascript
详解vue过滤器在v2.0版本用法
Jun 01 Javascript
js+html5实现半透明遮罩层弹框效果
Aug 24 Javascript
jfinal与bootstrap的登出实战详解
Nov 27 Javascript
element-ui中的select下拉列表设置默认值方法
Aug 24 Javascript
angularJs select绑定的model取不到值的解决方法
Oct 08 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面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
jQuery 使用手册(四)
2009/09/23 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
Python字典实现伪切片功能
2020/10/28 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
一套C#面试题
2013/10/09 面试题
护士个人简历自荐信
2013/10/18 职场文书
大学生的应聘自我评价
2013/12/13 职场文书
给女朋友的道歉信
2014/01/10 职场文书
冬季施工防火方案
2014/05/17 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
三严三实学习心得体会
2014/10/13 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
在 Python 中利用 Pool 进行多线程
2022/04/24 Python