关于jQuery ajax 状态码status为0,一直返回error
来源:互联网 发布:c语言源小程序代码大全 编辑:程序博客网 时间:2024/05/16 14:41
问题:为struts2的form表单submit提交按钮设置点击事件,点击事件触发ajax异步处理,完成异步提交操作。但是一直出现status为0,一直返回error的错误。
<script type="text/javascript"> function doInsert() { $.ajax({ url:'newsInsert.action', data:{"title":$("#title").val(),"content":$("#content").val()}, dataType:'json', type:'post', success:function (obj) { var jsonObj = eval('(' + obj + ')'); if (jsonObj.flag) { $("#alertDiv").attr("class","alert alert-success"); $("#alertText").text("新闻添加成功!"); } else { $("#alertDiv").attr("class","alert alert-error"); $("#alertDiv").text("新闻添加失败!"); } $("#alertDiv").fadeIn(1000,function () { $(this).fadeOut(3000); }) $("#title").val(""); $("#content").val(null); }, error:function (XMLhttpServlet) { alert("readystate->" + XMLhttpServlet.readyState); alert("status->" + XMLhttpServlet.status); alert("网络故障!"); } }); } </script>
分析:经过比较粗糙的调试,一步一步的alert出错误。在$.ajax()中的error alert出XMLhttpServlet.readyState为0,XMLhttpServlet.status也为0,检查了url,dataType,以及客户端的json格式都没有错误,可是问题出在哪里呢?
检查了$.ajax()方法后,发现没什么问题。然后就换了原生的ajax来看看问题出在哪里。
<script language="javascript"> var xmlHttp; function createXMLHTTP() { if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest() ; } else { //表示IE内核的浏览器 xmlHttp = new ActiveXOject("Microsoft.XMLHTTP") ; } } function doInsert(){ createXMLHTTP(); xmlHttp.open("POST","newsInsert.action") ; xmlHttp.onreadystatechange = getInsert; xmlHttp.send(null) ; } function getInsert(){ //定义回调函数 alert(xmlHttp.readyState); if(xmlHttp.readyState == 4){ alert(xmlHttp.status); if(xmlHttp.status == 200){ } } } </script>
然后发现当readyState 为4,说明响应内容解析完成,客户端可以调用了。可是status 为0,这说明已经快要找到问题所在了。这里status为0,有下列几种情况:
(1). url不存在
(2). url不可到达
(3). 发送了跨域请求
(4). 数据格式出错
(5). ajax在调用之前,就已经取消了。也就是说根本没有调用这个ajax请求。
经过逐一的排除,(1)、(2)、(3)、(4)都排除掉了,就剩下(5)了。然后我就再仔细检查了一下我的jsp的form表单,果然,发现提交按钮type="submit",这里type为submit,当点击提交按钮时,由于type="submit",表单提交,页面跳转,ajax请求根本就没有发出,所以status为0。要排除问题,只需要将提交按钮的type="submit"改为type="button",问题即可解决。
解决方法:将form表单的提交按钮的type="submit"改为type="button"。
下面来总结一下:type="submit"和type="button"的区别。
submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了。如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成button,即取消其自动提交的行为,否则,将会造成提交两次的效果,对于动态网页来说,也就是对数据库操作两次。或者在使用submit时验证时加return true或false。
submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上,submit会提交表单,button不会提交表单.
两者主要区别在于:
submit默认为form提交,可以提交表单(form).
button则响应用户自定义的事件,如果不指定onclick等事件处理函数,它是不做任何事情.当然,button也可以完成表单提交的工作.
INPUT type=submit 即发送表单,按回车提交表单
INPUT type=button 就是单纯的按钮功能,提交的是innerTEXT
注:type="submit"和type="button"的区别 转载于:http://blog.sina.com.cn/s/blog_693d183d0100uolj.html
- 关于jQuery ajax 状态码status为0,一直返回error
- jquery AJAX 返回总是error XMLHttpRequest.status 为0
- jQuery ajax一直返回error解答
- 关于jquery ajax 请求一直进入error
- Ajax的返回状态码(status)
- 【error】jQuery ajax请求错误返回status 0和错误error的问题
- JQuery ajax请求一直返回Error(parsererror)
- JQuery ajax请求一直返回Error(parsererror)
- JQuery ajax请求一直返回Error(parsererror)
- JQuery ajax请求一直返回Error(parsererror)
- JQuery ajax请求一直返回Error(parsererror)
- jQuery ajax请求错误返回status 0和错误error的问题
- jQuery ajax请求错误返回status 0和错误error的问题
- 移动端:ajax调用后报error错误,返回错误状态码为0
- jquery $.ajax status为200 却调用了error方法
- jquery $.ajax status为200 却调用了error方法
- Ajax返回状态为200但进入error方法
- AJAX请求时status返回状态明细表
- Http协议重点概述
- 14个你可能不知道的JavaScript调试技巧
- Android中放大和缩小图片,支持平顺滑动
- SCHEDULER使用详解
- 操作系统简介(笔记一)
- 关于jQuery ajax 状态码status为0,一直返回error
- react-native中的flex和flexGrow异同点
- Android类的XML属性,相关方法及说明
- DataTable 导出Excel
- Apache Storm学习笔记一:创建Storm集群
- DATE_SUB函数计算相对时间
- JAVA实现导出Excel表
- 用冒泡法给四个数据排序
- 牛客网---2016---搜狐扎金花