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 面向对象全新理练之数据的封装
Dec 03 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
Jan 30 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
js实现按钮颜色渐变动画效果
Aug 20 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
Mar 17 Javascript
浅谈json取值(对象和数组)
Jun 24 Javascript
微信小程序 wx:for的使用实例详解
Apr 27 Javascript
深入理解angular2启动项目步骤
Jul 15 Javascript
小程序实现列表倒计时功能
Jan 29 Javascript
JavaScript架构localStorage特殊场景下二次封装操作
Jun 21 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如何读取由JavaScript设置的Cookie
2017/03/22 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
JavaScript EasyPager 分页函数
2011/05/25 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python对DICOM图像的读取方法详解
2017/07/17 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
python Flask实现restful api service
2017/12/04 Python
浅谈Python NLP入门教程
2017/12/25 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python 日期排序的实例代码
2019/07/11 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
酒店门卫岗位职责
2013/12/29 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
社区禁毒工作方案
2014/06/02 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android