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 相关文章推荐
用js得到网页中所有的div的id
Oct 19 Javascript
window.onresize 多次触发的解决方法
Nov 08 Javascript
jquery弹出层类代码分享
Dec 27 Javascript
javascript简单实现类似QQ头像弹出效果的方法
Aug 03 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
Jan 22 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
Aug 07 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
微信小程序提取公用函数到util.js及使用方法示例
Jan 10 Javascript
webpack 如何解析代码模块路径的实现
Sep 04 Javascript
解决微信小程序中的滚动穿透问题
Sep 16 Javascript
微信小程序停止其他视频播放当前视频的实例代码
Dec 25 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 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函数代码
2010/04/22 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
2018/08/10 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
python使用KNN算法手写体识别
2018/02/01 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
岗位职责的含义
2013/11/17 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
入职担保书怎么写
2014/05/12 职场文书
工作证明英文模板
2014/10/21 职场文书
组织委员竞选稿
2015/11/21 职场文书
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers