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矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
Jan 09 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
Jan 24 Javascript
JavaScript中Date.toSource()方法的使用教程
Jun 12 Javascript
javascript+ajax实现产品页面加载信息
Jul 09 Javascript
三种带箭头提示框总结实例
Jun 14 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
Sep 29 Javascript
原生js代码实现图片放大境效果
Oct 30 Javascript
jQuery使用Layer弹出层插件闪退问题
Dec 22 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
JQuery常见节点操作实例分析
May 15 jQuery
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
php验证码实现代码(3种)
2015/09/07 PHP
PHP线程的内存回收问题
2016/07/08 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
jQuery中获取checkbox选中项等操作及注意事项
2013/11/24 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
Python常用库大全及简要说明
2020/01/17 Python
python asyncio 协程库的使用
2021/01/21 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
英国电信商店:BT Shop
2019/12/17 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
团队精神演讲稿
2013/12/31 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
春季运动会加油词
2015/07/18 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
详解Vue3使用axios的配置教程
2022/04/29 Vue.js