关于表单(Form)
来源:互联网 发布:建立健全网络监管制度 编辑:程序博客网 时间:2024/06/06 03:39
<form action="#" method="get/post"><label for="name">姓名:</label><input type="text" name="name" id="name" /><input type="radio" name="sex" value="male" />male<input type="radio" name="sex" value="female" />female<input type="checkbox" name="favorite" value="sing" />sing song<input type="checkbox" name="favorite" value="sport" />sport<select name="shoe"><option value="35">35ma</option><option value="37">37ma</option></select><input type="submit" value="submit" /></form>1.成功控件
浏览器并不是将所有的表单控件全部发送到服务器的,而是会查找所有的【成功控件】,只将这些成功控件的数据发送到服务端。
那么,什么是成功控件呢?简单说,成功控件就是:每个表单的控件都应该有一个name属性和【当前值】,在提交时,它们将以
【name=value】的形式将数据提交到服务器端,也即【action】的地址。这个算法逻辑由浏览器自身来处理。
对于一些特殊情况,成功控件还有以下规定:
a.控件不能是禁用状态,即指定【disabled="disabled"】的控件不是成功控件。b.对于【checkbox】来说,只有被勾选的才算是成功控件。
c.对于【radio button】来说,只有被勾选的才算是成功控件。
d.对于【select】控件来说,只有被勾选的项才算是成功控件,name是select标签的属性。
e.对于【file】上传文件控件来说,如果它包含了选择文件,那么它将是成功控件。
2.提交方式
如果是【post】,那么表单数据将放在请求体中被发送出去。
如果是【get】,那么表单数据将会追加到查询字符串中,以查询字符串的形式提交到服务端。
建议:
表单通常还是以post方式提交比较好,这样可以不破坏url,况且url还有长度限制及一些安全性问题。
但是,get请求能够解决因post请求引起的【405 method not allowed】问题。
3.数据编码
控件输入的内容并不是直接发送的,而是经过一种编码规则来处理的。目前基本上只会使用两种编码规则:application/x-www-form-urlencoded 和 multipart/form-data
这两个规则的使用场景简单说就是:后者在上传文件时使用,其他情形则默认使用前者。
使用地点:<form action="" method="" enctype="multipart/form-data"> =>上传文件
4.浏览器处理表单可分为四个阶段
a.识别所有的成功控件
b.为所有的成功控件创建一个数据集合,它们包含【control-name/current-value】这样的键值对。
c.按照【form.enctype】指定的编码规则对前面准备好的数据进行编码。编码规则放在请求中,用content-type指出。
d.提交编码后的数据。
*****关于ajax提交表单*****
//其实它是模拟浏览器提交表单,悄悄完成浏览器提交表单的四个步骤,而不用服务器地址跳转。$('#btnSubmit').click(function(){$.ajax({type:'post/get',url:'handle.aspx',data:$('#form').serialize(),//模拟浏览器的成功控件筛选逻辑,搜罗键值对。success:function(responseText){}});return false;//阻止控件的默认提交行为。});//============补充==========://1. ajax的data参数会自动提供url拼接,且可以加上编码$.ajax({type:'get',url:url,data:{id:2,name:"aaa",xxx:"想写多少就写多少",encoding:"utf-8"//如果需要编码就写在这里吧},beforeSend:function(){},//数据返回之前,给个loading等待什么的吧error:function(){},//要是出错了就给个提醒吧success:function(responseText){}//成功了,你看着办吧});//2.若配合【jquery.form.js】插件,表单的ajax提交就更简单了:$('#form').ajaxForm({success:function(responseText){}//可见是插件完成了成功控件筛选逻辑,并将数据悄悄发送到服务器端。});
- 关于表单(Form)
- 关于Form 表单
- 关于form表单
- 关于form表单的美化方案讲解
- 关于Form表单的提交与验证???
- 一个关于form表单验证的js
- 关于struts动态form表单验证
- 关于form表单的提交形式
- 关于Form表单的action和onSubmit
- 关于FORM下的表单提交问题
- 关于form表单无刷新提交上传
- 关于提交form表单中文乱码问题
- 关于form表单提交乱码的解决办法
- 关于form表单button事件教训
- 关于jsp中form表单提交
- 关于表单(form)设计的学习
- 关于Form表单提交中文乱码问题
- HTML:关于form表单的重置按钮
- Apache中的网络地址处理
- Android app调试
- Spring JDBC
- 团队领导力
- 命令驱动无线网卡链接AP上网
- 关于表单(Form)
- ubuntu fcitx
- 一般验证数字的正则表达式
- 根据url保存到本地mht格式
- Android: 在WebView中获取网页源码
- CCS help->tutorial->新建工程例子volume1.pjt
- ubuntu chrome
- 《Windows核心编程 5th》读书笔记----第9章 用内核对象进行线程同步
- C语言深度剖析--读书笔记_void 关键字