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 相关文章推荐
javascript 24小时弹出一次的代码(利用cookies)
Sep 03 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
Jun 19 Javascript
JQuery文本框高亮显示插件代码
Apr 02 Javascript
jquery()函数的三种语法介绍
Oct 09 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
如何高效率去掉js数组中的重复项
Apr 12 Javascript
BOM之navigator对象和用户代理检测
Feb 10 Javascript
vue + socket.io实现一个简易聊天室示例代码
Mar 06 Javascript
详解vue.js的devtools安装
May 26 Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 Javascript
利用Vue实现一个markdown编辑器实例代码
May 19 Javascript
layui表单验证select下拉框实现验证的方法
Sep 05 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实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
数控专业自荐书范文
2014/03/16 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
设计专业自荐信
2014/06/19 职场文书
机关作风建设心得体会
2014/10/22 职场文书
学籍证明模板
2014/11/21 职场文书
老公保证书
2015/01/17 职场文书
复兴之路观后感
2015/06/02 职场文书
演讲比赛主持词
2015/06/29 职场文书
小学校本教研总结
2015/08/13 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
JavaScript流程控制(分支)
2021/12/06 Javascript