当前位置:首页 > Js/Jquery

jQuery之ajax错误调试分析

happyfhb8年前 (2019-01-18)Js/Jquery2322
摘要:ajax 标准写法 参加  http://www.fenghaibin.com/?id=1304     $.ajax({          &nb…

ajax 标准写法 参加  http://www.fenghaibin.com/?id=1304

    $.ajax({
                url: '/control/httplog.ashx?functiontype=delete',
                  type: "post",
                data: { "product": product },
                dataType: "json", 
                beforeSend: function () {
                    // Handle the beforeSend event
                },
                success: function (data) {

                   //do 
                },
                complete: function (XMLHttpRequest, textStatus) {
                    // Handle the complete event
                },
                error: function (jqXHR,textStatus,errorThrown) {
                    alert("出错啦!");
                }
            });

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

 


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


扫描二维码推送至手机访问。

版权声明:本文由海海日记-冯海滨博客发布,如需转载请注明出处。

本文链接:http://www.fenghaibin.com/?id=1305

“jQuery之ajax错误调试分析” 的相关文章

jQuery再学习之二、jQuery选择器

前言jQuery选择器非常非常强大而且灵活,要完全掌握它是需要狠下一番功夫的。当然,掌握了主要的部分后,其它的了解就好,因为一些比较偏的毕竟用得少,而且可以有其它方法来实现。…

jquery的table表格在指定行后添加新行

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META…

jquery easyui datebox 获取时间

$("#dd").datebox("getValue");当然这种方式不是太符合我们习惯,那么我们可以给它添加一个事件监听,在datebox onSelect 日期选中后,自动为input id="dd" type="text…

easyui中combobox的值改变onchang事件

今天在公司里,那jquery中的easy-ui-里面的combobox,真的郁闷死了!    把郁闷的事情记下来,下次就不会犯错了!…

js的replace实现全部替换的方法

<script language="javascript">    function change(){     var str = "aca…

无比纠结的html转移

最近做jqueryeasyui的一个项目被html转义困扰主要难点在于换行符和特殊符号。那 textarea 为列子提交服务器前用escape编码服务器接收到编码数据后 解码 然后 解码前.Replace("+", "%2b")//将+号在编码&nb…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。