关于提交AJAX请求后成功,不执行success去执行error的原因及分析
来源:互联网 发布:小黄鸡软件下载 编辑:程序博客网 时间:2024/05/17 23:13
又到了临近期末之际,这学期学的javaWeb也要开始做期末项目了。我(们)做的是一个类似于网上零售的商城系统。其中我有用到ajax的异步请求方式,而在我码代码的过程中,发现了一个很奇怪的现象:ajax提交给后台的请求有执行成功,但是当执行了之后却不去执行success回调而执行error回调,先上代码:
function deleteCar(carID) { if (confirm("确认要删除?")) {$.ajax({url:"servlet/DeleteCarServlet",data:{"carID":carID},type:"GET", dataType:"json", success:function(data){ if(data=="SUCCESS"){$("#productID_"+carID).hide();alert(data+"删除成功");return;}else{alert("操作失败");return;}},error:function(){alert("error");}}); } }
在这里调用该函数:
<td class="delete"><button onclick="deleteCar(<%=car.getCarID()%>);">删除</button></td>
而当我调试的时候,却出现了这种情况,没有执行success,去执行了error
而在后台,可以看到确实已经执行了我的业务逻辑代码:
我就意识到可能哪一个环节出问题了,但后台逻辑代码没错的话就肯定是前端有问题,而且肯定就是这个ajax请求或是调用的那一行有错。
我又去网上搜索了些关于何时调用success和errord的问题,总结如下:
Ajax请求通过XMLHttpRequest对象发送请求,该对象有四个状态(readyState):
0-未初始化、1-正在初始化、2-发送数据、3-正在发送数据、4-完成。
当XMLHttpRequest.readyState为4时,表示ajax请求已经完成可以得到响应结果。
ajax的success和error方法根据响应状态码来触发。当XMLHttpRequest.status为200的时候,表示响应成功,此时触发success().其他状态码则触发error()。
除了根据响应状态码外,ajax还会在下列情况下走error方法:
1. 返回数据类型不是JSON
2. 网络中断
3. 后台响应中断 点击打开链接
可以知道,竟然后台的代码都执行了,那状态码肯定是已经经过了这4个的,所以问题不在这
我继续看代码,这里确实没有问题啊,难道是前端的那一行调用的代码出错?我索性将<button>换成<a> 看看行不行,
<a onclick="deleteCar(<%=car.getCarID()%>);">删除</a>
一调试,还真的可以!!!
而为什么<a>标签可以<button> 不行呢?我在网上找到了这个答案:
既然用了Ajax就不应该用OnClick事件。
1、点击Button按钮,先执行OnClientClick客户端脚本,return true时进行页面回发。
2、使用Ajax异步请求,回调函数接收数据之前,页面已经回发了。原来的页面已经不存在,上哪接收异步请求返回的结果。
其实这个并不是我的这个的答案,不过也可以参考。
而且我发现,当dataType知名为“json”而返回的又不是json时,肯定会出错,所以若返回的类型不是json,这一个属性可以不填。
- 关于提交AJAX请求后成功,不执行success去执行error的原因及分析
- $.ajax返回不执行success的原因
- $.ajax返回不执行success的原因
- Jquery ajax不执行success的原因
- Form表单提交的ajax即不执行success也不执行error解决办法
- 关于ajaxFileUpload上传文件成功后,既不返回success又不返回error的原因
- ajax的success不执行
- 关于oracle的任务进程提交后不执行原因
- Jquery ajax json 不执行success的原因 坑爹
- jquery ajax success中的函数不执行的原因
- Jquery ajax json 不执行success的原因
- JQuery ajax json 不执行success的原因
- Jquery ajax json 不执行success的原因
- Jquery ajax json 不执行success的原因 坑爹
- ajax请求成功,但没执行success(done),执行了error(fail)
- ajax不定时执行success和error
- ajax无法执行success回调的原因分析
- ajax请求成功后执行error中的方法
- JavaBean简介及设计原则
- 图像处理我是这样入门的------我的第一篇csdn博文
- 什么是JSP动作元素
- traceroute命令应用
- hping命令介绍
- 关于提交AJAX请求后成功,不执行success去执行error的原因及分析
- 路由扫描介绍
- 使用普通方式创建JavaBean
- useBean动作元素
- 批量主机服务扫描
- ncat使用介绍
- linux常用命令
- mtr简介
- 防攻击介绍