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){    console.log(jqXHR.);    console.log(textStatus);    console.log(errorThrown);    }
});

根据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的错误状态码,其实都是后端发送过来的。

以上是个人开发过程中遇到的问题及处理总结,若有不正之处,望提出指正,万分感激!

转载于:https://www.cnblogs.com/BillyQin/p/6101539.html

jQuery之ajax错误调试分析相关推荐

  1. JQuery.Ajax 错误调试帮助信息

    下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求 ...

  2. [转]Jquery中AJAX错误信息调试参考

    下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求 ...

  3. jQuery使用ajax错误的重复发送请求的解决办法

    开发过程中,发现jQuery中的ajax原本应该只发送一次请求,事实上却连续发送了多次. 解决办法是,在发送前作一个标记,检测是否已经发送过,成功或者失败再收回标记. var th = $(this) ...

  4. ajax和jquery什么关系,Jquery和Ajax的关系!

    Jquery是一种JavaScript框架,而Ajax(Asynchronous JavaScript and XML)是异步JavaScript和XML. Jquery是JavaScript的框架, ...

  5. [转]JQuery.Ajax之错误调试帮助信息

    本文转自:http://blog.csdn.net/lampsunny/article/details/8053967 下面是Jquery中AJAX参数详细列表: 参数名 类型 描述 url Stri ...

  6. ajax请求必须打断点才能成功,Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)...

    以前写过一个程序,发现用断点调试的时候,一步步的运行,程序是可以的,但是去了断点程序就出现了问题. $(document).ready(function(){ var arra=new Array() ...

  7. ajax 错误信息error,jquery ajax的error错误信息

    项目开发中ajax的异常处理起来算是比较头疼的,因为是异步请求,所以即使ajax异常程序依然会继续执行,导致找ajax的异常比较麻烦. 今天处理ajax异常时搜到一篇文章,提到error可以返回aja ...

  8. 20150430 调试分析之 根据内核报错信息栈信息分析错误

    20150430 调试分析之 根据内核报错信息栈信息分析错误 2015-04-30 Lover雪儿 还是沿用上篇文章的程序,继续研究内核报错信息 文章地址:http://www.cnblogs.com ...

  9. 用 jQuery 的 AJAX 功能发现的一个错误/注意点:HTTP Error 411

    今天程序中有个地方需要 Ajax 方式 POST 数据,发现在 IE 6.0 下正常,而 FireFox 2.0.0.9 下则出错. 通过 FireBug 抓取 ajax 回发后得到的页面信息如下: ...

最新文章

  1. mysql索引教程_MySQL教程96-MySQL索引类型
  2. Bio-protocol第一届生物实验短视频大赛集锦(三)——软件使用篇
  3. 一本跳进挨踢生活圈的日记(南京站)
  4. 实用线性代数和凸优化 Convex Optimization
  5. C++知识:__stdcall、__cdcel和__fastcall三者的区别
  6. 线上飙升800%,load达到12的解决过程
  7. 线程(CreateThread)
  8. mysql授权无密码用户_MySQL下新建用户,授权,删除用户,修改密码
  9. LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)
  10. java商品管理系统_【Java Web】简易商品信息管理系统——首个Web项目
  11. 【原创】OllyDBG 入门系列(七)-汇编功能
  12. EMQX源码阅读笔记
  13. 拥有一个高性能低延时数据库是什么样的体验?
  14. Arcgis Javascript那些事儿(六)--arcgis js API本地环境配置
  15. Mac 快捷键 桌面壁纸
  16. MAX to UE4 单位设置
  17. 【车间调度】柔性作业车间调度问题的研究方法
  18. 语音服务器登录失败,设置语音邮件用户被锁定前的登录失败次数:Exchange 2013 帮助 | Microsoft Docs...
  19. 程序员女朋友礼物python代码_程序员到底该怎么给女朋友挑礼物
  20. 搭建资金运营体系提高企业的运营能力

热门文章

  1. Linux 重启网卡
  2. NumPy 基础用法
  3. [BZOJ1798][AHOI2009]Seq维护序列 线段树
  4. 更改数据库管理员sa账户密码
  5. [Documentation]porting
  6. 利用扩展欧几里得算法编程求逆元
  7. JavaEE实战班第九天
  8. 数学不好,能学好机器学习吗?
  9. 别再传李笑来的录音了!这才是有关区块链最靠谱最简单易懂的科普
  10. Spring Boot 2.3.3 稳定版发布!修复了这18个Bug!!