html form中的button引起的问题
来源:互联网 发布:淘宝无法登录 编辑:程序博客网 时间:2024/06/06 06:37
Form中包含一个button如
<form>
<button class="btn micro-btn">提交成功!</button>
</form>
然后在点击button的时候调用jquery.ajax方法。这本来是一个很简单的问题,显然就是ajax调用正常工作。但是问题在于ajax调用总是失败。在ajax的回调中注册了fail方法,如下:
fail(function(jqxhr, status){
console.dir(jqxhr);
console.log(status);
});
总是能进入fail方法,理由无从直到。并且是fail之后,总是会刷新当前页面。这可百思不得其解。在Chrome Developer Tool的Network当中也发现request是不全的,甚至连request method都没有。response则没有显示。
搜索半天找到这么一篇文章:http://stackoverflow.com/questions/13892529/ajax-request-fails-cant-see-why. 这里提到fail代码为:
$.ajax({ /* ajax options omitted */ error: function (xmlHttpRequest, textStatus, errorThrown) { if(xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0) return; // it's not really an error else // Do normal error handling});
“Error with status or readyState == 0 can occur when you cancel ajax request before it completes, or when you navigate to another page or when you refresh page.”由此可见,还是对于底层的ajax原理了解不清楚。调试一看,果然如他所说。所以是发生了什么事情取消了ajax请求。前面提到页面会刷新,这个刷新实际上取消了ajax请求。为什么会刷新呢,搜索了“form button”之后找到了一些些线索,button是有type属性的,参考这里,有三个值,button,reset,submit,而且各个浏览器可能默认值不一样。Chrom似乎默认用的是submit。而这个button又是在form里面的,所以默认点击就会submit form了。
这样解释就完全行得通了。所以最简单的方法是将button的type属性设置为button。第二种方法就是犹如这里所说的http://stackoverflow.com/questions/8121958/jquery-ajax-post-inside-a-form-prevent-form-submission-on-ajax-call,增加js方法prevernt form submit,或者将button移到form之外。
之前这个button可以正常工作,那是因为button被无意识地写在form外面。这次无意识的移动到form里面,所以就出问题了。
- html form中的button引起的问题
- html disabled 和readonly,disabled 引起的form表单提交问题
- html:form的问题
- form中 button不能用的问题
- 仿ios侧滑退出主题引起的button问题
- HTML代码换行引起的空格问题
- Report标签嵌套在自定义form中引起的问题
- HTML Button自动刷新页面的问题
- HTML Button自动刷新页面的问题
- HTML中的form标签的enctype 属性
- HTML中的<form>和<input>的用法
- button在Firefox下点击提交表单(form)的问题
- 关于form表单底下 button自动提交表单的问题
- form表单里面 button标签自动提交表单的问题
- 标签中的字数过多引起的问题
- html回车键导致form提交的问题
- html form onsubmit表单提交的问题
- HTML中的Form属性
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之五--模块(菜单)管理源码分享
- testtest
- 指针函数与函数指针
- IOS 解决 IOS 7 界面 混乱问题 --- 在某些界面问题解决不了时可以加上这段代码试试
- java抽象类与接口的区别
- html form中的button引起的问题
- Linux下Vim改造成IDE
- 基于visual Studio2013解决C语言竞赛题之0205位数求和
- QT调用动态链接库实例
- ubuntu 安装node.js 最新版本
- 个人能力--有效性
- ALV 例子
- socket 10038错误
- ios学习笔记之OC篇(二):引用计数