ajax在什么情况下走success和error?

Posted 坤嬷嬷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax在什么情况下走success和error?相关的知识,希望对你有一定的参考价值。

简单介绍下ajax

Ajax请求通过XMLHttpRequest对象发送请求,该对象有四个状态(readyState):0-未初始化、1-正在初始化、2-发送数据、3-正在发送数据、4-完成

当XMLHttpRequest.readyState为4时,表示ajax请求已经完成可以得到响应结果。

ajax的success和error方法根据响应状态码来触发。

当XMLHttpRequest.status为200的时候,表示响应成功,此时触发success().

其他状态码则触发error()。

除了根据响应状态码外,ajax还会在下列情况下走error方法:

 返回数据类型不是JSON

 网络中断

 后台响应中断

返回JSON格式引发parsererror错误

很多时候会遇到明明成功请求到后台,后台也返回了数据到前端,htttp状态是200,却发生parsererror错误,并不执行success方法。

这是因为:jquery1.4版本以后对json格式要求非常严格了,要满足json.org网站定义的格式才能执行success回调,否则都会出错,无法解析返回的json数据。

JSON格式总结下,详细的去json.org 查看

1)键名称:用双引号 括起

2)字符串:用双引号 括起

3)数字,布尔类型不需要 使用双引号 括起

例如:返回的是{success:true,id:1}这种不规则的字符串,不是严格的json格式,改成{"success":true,"id":"1"}就可以正常执行success回调了。

 

 

以上是关于ajax在什么情况下走success和error?的主要内容,如果未能解决你的问题,请参考以下文章

ajax在什么情况下会走success和error

ajax与jQuery的异步提交,他在啥情况下会走error

$.ajax()中的success和error的使用注意事项

ajax success和error接收了哪些状态码

thinkphp方法success和error跳转时间以及返回ajax

jquery问题 $.ajax() success:不执行,直接是第四张图的输出页面!为什么!我想alert()