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 相关文章推荐
jQuery.event兼容各浏览器的event详细解析
Dec 18 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
js鼠标点击图片切换效果实现代码
Nov 19 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
JavaScript表单即时验证 验证不成功不能提交
Aug 31 Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 Javascript
element-ui table span-method(行合并)的实现代码
Dec 20 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
Feb 15 Javascript
JavaScript静态作用域和动态作用域实例详解
Jun 17 Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 Javascript
利用vue3+ts实现管理后台(增删改查)
Oct 30 Javascript
jQuery实现增删改查
Dec 22 jQuery
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采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
JavaScript 基础问答三
2008/12/03 Javascript
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
python使用建议与技巧分享(二)
2020/08/17 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
总裁岗位职责
2013/12/04 职场文书
百度吧主申请感言
2014/01/12 职场文书
面试后的英文感谢信
2014/02/01 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
学校2014年度工作总结
2014/12/06 职场文书
工作收入证明范本
2015/06/12 职场文书
导游词之镜泊湖
2019/12/09 职场文书
Vue和Flask通信的实现
2021/05/19 Vue.js
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫