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实现画板的代码
Sep 05 Javascript
ExtJS 工具栏 分页事件参数
Mar 05 Javascript
js select常用操作控制代码
Mar 16 Javascript
javascript中substr,substring,slice.splice的区别说明
Nov 25 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
Apr 08 Javascript
node.js中的fs.write方法使用说明
Dec 15 Javascript
JS自定义选项卡函数及用法实例分析
Sep 02 Javascript
jQuery基于json与cookie实现购物车的方法
Apr 15 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
Vue2.0 事件的广播与接收(观察者模式)
Mar 14 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
js实现图片无缝循环轮播
Oct 28 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
解决中英文字符串长度问题函数
2007/01/16 PHP
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
php数组去重复数据示例
2014/02/25 PHP
php实现的用户查询类实例
2015/06/18 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
JQuery中each()的使用方法说明
2010/08/19 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
python计算auc指标实例
2017/07/13 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
python+tkinter实现学生管理系统
2019/08/20 Python
如何基于Python创建目录文件夹
2019/12/31 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
酒店销售经理岗位职责
2014/01/31 职场文书
大学活动总结模板
2014/07/10 职场文书
关于旅游的活动方案
2014/08/15 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
法院答辩状格式
2015/05/22 职场文书
结婚主持人致辞
2015/07/28 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers