最近碰到一个问题,就是如题目所说,ajax在调用的时候,明明返回成功了,但js代码却走到了error中,最后发现是我返回的json格式不对,jQuery在1.4后,对ajax返回的json格式有了很强的限制,所以一定要用严格的JSON格式返回.

先上代码:

     jQuery.ajax({type: "POST",async: true,dataType: "json",url: this.iurl + '/getCouponNums.action',data: {venderIds: venderIds, random: Math.random()},success: function (result) {console.log("zslog 13.2 异步调用返回成功,result:"+result);},error: function (XMLHttpResponse, textStatus, errorThrown) {console.log("1 异步调用返回失败,XMLHttpResponse.readyState:"+XMLHttpResponse.readyState);console.log("2 异步调用返回失败,XMLHttpResponse.status:"+XMLHttpResponse.status);console.log("3 异步调用返回失败,textStatus:"+textStatus);console.log("4 异步调用返回失败,errorThrown:"+errorThrown);}});

对的,我打出这么多日志后,再变态的错误也就迎刃而解了,这个也适用于大家找错误,这样找肯定能找到是哪的问题,不至于一头雾水

最终控制台打出来的错误是parsererror,那就是json解析出错了,而且还能打印出来具体的出错位置

这是我的response:{“couponNums”:{611662:1},“couponSets”:null,“msg”:null,“success”:true}

发现了没,611662不是字符串类型,也就是这里,就是所谓的不严格的JSON格式,导致ajax跳到了error函数.

总结:
遇到问题不要怕,顺着方向慢慢找,实在不行打日志,最后百度和谷歌



最后附带一个error函数的三个参数的有关状态码对比,供对照着查询找错:

第一个参数XMLHttpRequest.readyState: 状态码
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

第一个参数XMLHttpRequest.status:
0XX:状态未初始化
1xx-信息提示
这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx响应。
100-继续。
101-切换协议。
2xx-成功
这类状态代码表明服务器成功地接受了客户端请求。
200-确定。客户端请求已成功。
201-已创建。
202-已接受。
203-非权威性信息。
204-无内容。
205-重置内容。
206-部分内容。
3xx-重定向
客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
301-对象已永久移走,即永久重定向。
302-对象已临时移动。
304-未修改。
307-临时重定向。
4xx-客户端错误
发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。400-错误的请求。
401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:
401.1-登录失败。
401.2-服务器配置导致登录失败。
401.3-由于ACL对资源的限制而未获得授权。
401.4-筛选器授权失败。
401.5-ISAPI/CGI应用程序授权失败。
401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。
403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因:
403.1-执行访问被禁止。
403.2-读访问被禁止。
403.3-写访问被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒绝。
403.7-要求客户端证书。
403.8-站点访问被拒绝。
403.9-用户数过多。
403.10-配置无效。
403.11-密码更改。
403.12-拒绝访问映射表。
403.13-客户端证书被吊销。
403.14-拒绝目录列表。
403.15-超出客户端访问许可。
403.16-客户端证书不受信任或无效。
403.17-客户端证书已过期或尚未生效。
403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。
403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。
403.20-Passport登录失败。这个错误代码为IIS6.0所专用。
404-未找到。
404.0-(无)–没有找到文件或目录。
404.1-无法在所请求的端口上访问Web站点。
404.2-Web服务扩展锁定策略阻止本请求。
404.3-MIME映射策略阻止本请求。
405-用来访问本页面的HTTP谓词不被允许(方法不被允许)
406-客户端浏览器不接受所请求页面的MIME类型。
407-要求进行代理身份验证。
412-前提条件失败。
413–请求实体太大。
414-请求URI太长。
415–不支持的媒体类型。
416–所请求的范围无法满足。
417–执行失败。
423–锁定的错误。
5xx-服务器错误
服务器由于遇到错误而不能完成该请求。
500-内部服务器错误。
500.12-应用程序正忙于在Web服务器上重新启动。
500.13-Web服务器太忙。
500.15-不允许直接请求Global.asa。
500.16–UNC授权凭据不正确。这个错误代码为IIS6.0所专用。
500.18–URL授权存储不能打开。这个错误代码为IIS6.0所专用。
500.100-内部ASP错误。
501-页眉值指定了未实现的配置。
502-Web服务器用作网关或代理服务器时收到了无效响应。
502.1-CGI应用程序超时。
502.2-CGI应用程序出错。application.
503-服务不可用。这个错误代码为IIS6.0所专用。
504-网关超时。
505-HTTP版本不受支持。
FTP
1xx-肯定的初步答复
这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。
110重新启动标记答复。
120服务已就绪,在nnn分钟后开始。
125数据连接已打开,正在开始传输。
150文件状态正常,准备打开数据连接。
2xx-肯定的完成答复
一项操作已经成功完成。客户端可以执行新命令。200命令确定。
202未执行命令,站点上的命令过多。
211系统状态,或系统帮助答复。
212目录状态。
213文件状态。
214帮助消息。
215NAME系统类型,其中,NAME是AssignedNumbers文档中所列的正式系统名称。
220服务就绪,可以执行新用户的请求。
221服务关闭控制连接。如果适当,请注销。
225数据连接打开,没有进行中的传输。
226关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。
227进入被动模式(h1,h2,h3,h4,p1,p2)。
230用户已登录,继续进行。
250请求的文件操作正确,已完成。
257已创建“PATHNAME”。
3xx-肯定的中间答复
该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。331用户名正确,需要密码。
332需要登录帐户。
350请求的文件操作正在等待进一步的信息。
4xx-瞬态否定的完成答复
该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。421服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。
425无法打开数据连接。
426Connectionclosed;transferaborted.
450未执行请求的文件操作。文件不可用(例如,文件繁忙)。
451请求的操作异常终止:正在处理本地错误。
452未执行请求的操作。系统存储空间不够。
5xx-永久性否定的完成答复
该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。500语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。
501在参数中有语法错误。
502未执行命令。
503错误的命令序列。
504未执行该参数的命令。
530未登录。
532存储文件需要帐户。
550未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。
551请求的操作异常终止:未知的页面类型。
552请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。
553未执行请求的操作。不允许的文件名。
常见的FTP状态代码及其原因
150-FTP使用两个端口:21用于发送命令,20用于发送数据。状态代码150表示服务器准备在端口20上打开新连接,发送一些数据。
226-命令在端口20上打开数据连接以执行操作,如传输文件。该操作成功完成,数据连接已关闭。
230-客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。
331-客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。
426-命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。
530-该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS的配置可能拒绝匿名访问。
550-命令未被执行,因为指定的文件不可用。例如,要GET的文件并不存在,或试图将文件PUT到您没有写入权限的目录。

第二个参数textStatus:字符串类型的返回状态
“timeout”(超时), “error”(错误), “abort”(中止), “parsererror”(解析错误),还有可能返回空值。

第三个参数errorThrown:返回的错误信息
表示服务器抛出返回的错误信息,如果产生的是HTTP错误,那么返回的信息就是HTTP状态码对应的错误信息,比如404的Not Found,500错误的Internal Server Error。

[前台]---ajax返回200成功,却进入error函数的解决方法相关推荐

  1. php ajax sucess 失败,Ajax请求发送成功但不进success的解决方法(图文教程)

    下面我就为大家分享一篇Ajax请求发送成功但不进success的解决方法,具有很好的参考价值,希望对大家有所帮助. 1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chr ...

  2. 回车ajax显示,ajax返回值中有回车换行、空格的解决方法分享

    最近在写一个页面,用jquery ajax来实现判断,刚写好测试完全没有问题,过了两天发现出现问题,判断不成了.后来发现所有alert出来的返回值前面都会加若干换行和空格.(至今不明白,同一台电脑,同 ...

  3. ajax发不出去请求_Ajax请求发送成功但不进success的解决方法

    1.情况描述:ajax发送成功,后台也成功响应请求,并返回了json数据,通过chrome监听请求也可以看到响应的json数据,但是就是不进success方法,反而跑到error方法中了 前端: $. ...

  4. jquery.ajax的url中传递中文乱码问题的解决方法

    jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuer ...

  5. LoadRunner出现error问题及解决方法总结

    这个好DD是我从一个GG的BLOG里转的,非常受用,尤其新手... 嘿嘿 LoadRunner出现error问题及解决方法总结 一.Step download timeout (120 seconds ...

  6. EXP-00056: ORACLE error 12514 encountered解决方法

    EXP-00056: ORACLE error 12514 encountered解决方法 oracle10g环境下导出: 1 exp parfile=exp3.txt 2.exp3.txt内容USE ...

  7. mysql source导入报错ERROR 1366的解决方法

    mysql source导入报错ERROR 1366的解决方法 参考文章: (1)mysql source导入报错ERROR 1366的解决方法 (2)https://www.cnblogs.com/ ...

  8. 【转】nginx提示:500 Internal Server Error错误的解决方法

    [转]nginx提示:500 Internal Server Error错误的解决方法 参考文章: (1)[转]nginx提示:500 Internal Server Error错误的解决方法 (2) ...

  9. yum安装软件包提示Error Downloading Packages解决方法

    yum安装软件包提示Error Downloading Packages解决方法 参考文章: (1)yum安装软件包提示Error Downloading Packages解决方法 (2)https: ...

最新文章

  1. boost::regex模块在 cpp 文件中搜索类定义,使用全局数据的测试程序
  2. 《Cracking the Coding Interview》——第11章:排序和搜索——题目7
  3. 判断大小简单算法_算法浅谈——人人皆知却很多人写不对的二分法
  4. python excel 添加数据_使用pyexcel python在电子表格中添加行数据
  5. kafka生产者消息分区策略
  6. html中哪些属于块级标记,html行级标记和块级标记都有哪些?
  7. Swift 获取字符的个数 、字符串的遍历
  8. 《Effective C#》读书笔记——条目14:尽量减少重复的初始化逻辑.NET资源管理
  9. Raki的读paper小记:GloVe: Global Vectors for Word Representation
  10. shuffleNet实现
  11. 后端系统开发利器,gflags概述
  12. Jquery实现简单轮播图效果
  13. 链表的中间结点--快慢指针思想
  14. VMware14详细安装带软件
  15. java实现汉字转为拼音
  16. BERT模型的结构,特点和实践
  17. 解决python UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xb5‘ in position 255: illegal mult
  18. DES_3DES_AES_IDES_RSA密码算法比较
  19. Ti ub954/953 Sensor调试心得
  20. 查找字幕资源的网址。射手网

热门文章

  1. 如何判断两个IP地址是不是处于同一网段?
  2. MySQL索引的索引长度问题
  3. Equivalent Strings
  4. string.Format格式化输出
  5. SQL Performance Analyzer SPA常用脚本汇总
  6. 【计算机网络复习 物理层】2.2 物理传输介质
  7. statement的增删改查和动态的增删改查
  8. Eclipse中tomcat的简单配置
  9. linux网络包截获,用C实现截获网络数据包
  10. html怎么在图片上添加文字_Image J基础操作:给图片添加文字和标注