<form id='form' action="html_form_action.asp" method="get" enctype="">
<input type="text" name="firstname">
<input type="submit" value="Submit">
</form>
1、最常见的就是他的两个属性action和methods
action:规定当提交表单时向何处发送表单数据(url)
method:用哪种方式发送(post/get)
enctype:规定在发送表单数据之前如何对其进行编码
2、点击type为submit的元素,即可向后端发送表单数据
注意:点击后,页面会默认跳转到action地址页面。那一页将显示后台返回结果。
如果不想跳转,可以有两种方法:
(1)将submit按钮设置为type=“button”,用ajax进行后台提交数据
(2)return false之后,form就不会跳转了
$('#form').submit(function () {
return false;
})
3、enctype有哪些值(默认为application/x-www-form-urlencoded)
(1)application/x-www-form-urlencoded 表单数据会编码为 “application/x-www-form-urlencoded”。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值)。
(2)multipart/form-data 不对字符编码,在使用包含文件上传控件的表单时,必须使用该值。
(3)text/plain 表单数据会在未编码的情况下进行发送,空格转换为 “+” 加号,但不对特殊字符编码。
4、form表单提交后,想通过回调函数提示用户提交成功
注意:原生表单做不到,可以使用Ajax
解决方案:
$('form').on('submit',function(e){
e.preventDefault();
$.ajax({
type:"get",
url:"http://yoursite",
data:{
name:"xxx"//把表单填写值放这里传到后端
},
success:function (data) {
console.info("返回值:",data);
}
});
})
5、但是使用Ajax有个问题,如何获取表单里的所有数据呢,用原生js一个一个拿吗?还是用jQuery的$(“form”).serializeArray()的方法?
也不是不行,但是,太麻烦了。
使用jquery.form.js是一个不错的选择。
$('form').on('submit',function(e){
e.preventDefault();
$('#form').ajaxSubmit({
type:"get",
url:"http://yoursite",
beforeSerialize:function(){
//发送的表单值之前修改某些表单的值
}
beforeSubmit:function(){
//可以做表单提交前的验证,不通过则可以阻止表单的提交
}
success:function (data) {
console.info("返回值:",data);
}
});
})