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实现控制内容的向上向下滚动效果
Jun 26 Javascript
jQuery MD5加密实现代码
Mar 15 Javascript
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
JQuery Highcharts 动态生成图表的方法
Nov 15 Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
jQuery实现购物车计算价格功能的方法
Mar 25 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
Mar 29 Javascript
VueJS如何引入css或者less文件的一些坑
Apr 25 Javascript
Vue.set()实现数据动态响应的方法
Feb 07 Javascript
JavaScript原型对象原理与应用分析
Dec 27 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
Dec 31 Javascript
JavaScript手写数组的常用函数总结
Nov 22 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使用array_fill定义多维数组的方法
2015/03/18 PHP
php计算整个目录大小的方法
2015/06/01 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
php实现搜索类封装示例
2016/03/31 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
新闻内页-JS分页
2006/06/07 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python异常学习笔记
2015/02/03 Python
详解python3中的真值测试
2018/08/13 Python
浅谈Python 递归算法指归
2019/08/22 Python
jupyter notebook 多行输出实例
2020/04/09 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
生日邀请函范文
2014/01/13 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
品质口号大全
2014/06/17 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
党员检讨书范文
2014/12/27 职场文书
三峡人家导游词
2015/01/31 职场文书
物业接待员岗位职责
2015/04/15 职场文书
预备党员介绍人意见
2015/06/01 职场文书
地道战观后感300字
2015/06/04 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android
讲解MySQL增删改操作
2022/05/06 MySQL