浅谈jquery.form.js的ajaxSubmit
和ajaxForm
的使用
依赖的脚本文件
<script src="../Javascript/jquery-1.11.1.min.js" type="text/javascript"></script>
<script src="../Javascript/jquery.form.js" type="text/javascript"></script>
ajaxSubmit 和ajaxForm区别
ajaxForm
ajaxForm()
不能提交表单。在document
的ready
函数中,使用ajaxForm
来为AJAX提交表单进行准备。提交动作必须由submit
开始
ajaxForm()
适用于以表单提交方式处理ajax技术(需要提供表单的action、id、 method,最好在表单中提供submit
按钮)它大大简化了使用ajax
技术提交表单时的数据传递问题,使用ajaxForm()
你不需要逐个的以JavaScript的方式获取每个表单属性的值,并且也不需要在请求路径后面通过url重写的方式传递数据。ajaxForm()
会自动收集当前表单中每个属性的值,然后将其以表单提交的方式提交到目标url。这种方式提交数据较安全,并且使用起来更简单,不必写过多冗余的JavaScript代码
ajaxSubmit
ajaxSubmit()
马上由AJAX来提交表单。你可以在任何情况下进行该项提交。
ajaxSubmit()
适用于以事件的机制以ajax
提交form
表单(超链接、图片的click
事件),该方法作用与ajaxForm()
类似,但它更为灵活,因为他依赖于事件机制,只要有事件存在就能使用该方法。你只需指定该form
的action
属性即可,不需要提供submit
按钮。
示例代码
<!--HTML-->
<form id="form1" name="form1">
<input id="userName" name="userName" value="姓名" />
<input id="age" name="age" value="30" />
<input type="submit" value="submit" />
</form>
<input id="myButton" type="button" value="提交" />
<!--javascript-->
<script type="text/javascript">
var myData = {
"CnName": "周佳良",
"EnName":"zhoujl"
};
$(function () {
var ajaxFormOption = {
type: "post", //提交方式
dataType: "json", //数据类型
data: myData,//自定义数据参数,视情况添加
url: "TestHandler.ashx?type=ajaxForm", //请求url
success: function (data) { //提交成功的回调函数
document.write("success");
}
};
//form中有submit按钮——方式1
$("#form1").ajaxForm(ajaxFormOption);
//form中有submit按钮——方式2
$("#form1").submit(function () {
$(this).ajaxSubmit(ajaxFormOption);
return false;
});
//不需要submit按钮,可以是任何元素的click事件
$("#myButton").click(function () {
$("#form1").ajaxSubmit(ajaxFormOption);
return false;
});
});
</script>
利用jquery.form.js的ajaxSubmit
实现不跳转提交表单数据
我们直接通过form
提交的话, 提交后当前页面跳转到form
的action
所指向的页面。然而,很多时候我们比不希望提交表单后页面跳转,那么,我们就可以使用ajaxSubmit(obj)
来提交数据
//form表单阻止提交
<form onsubmit="return saveForm()"><form>
function saveForm(){
var validatestatus = $('#myForm').valid();//与validate配合使用,必须先验证
if(validatestatus){
$('#myForm').ajaxSubmit(function() {
alert("设置保存成功!");
window.location.href=
});
return false; //阻止表单默认提交
}
<form>
标题:<input type="text" name="title" /><br />
内容:<textarea name="content"><textarea/><br />
<button>提交</button>
</form>
$('button').on('click', function() {
$('form').on('submit', function() {
var title = $('inpur[name=title]').val(),
content = $('textarea').val();
$(this).ajaxSubmit({
type: 'post', // 提交方式 get/post
url: 'your url', // 需要提交的 url
data: {
'title': title,
'content': content
},
success: function(data) { // data 保存提交后返回的数据,一般为 json 数据
// 此处可对 data 作相关处理
alert('提交成功!');
}
$(this).resetForm(); // 提交后重置表单
});
return false; // 阻止表单自动提交事件
});
});
jquery form
的ajaxform
提交表单上传文件后服务器端返回json
数据不能正常获得使用
ajaxForm
提交表单上传文件后服务器端返回json
数据IE浏览器无法解析 ,到后来跟踪一个网站同样地功能才找到问题所在,原来使用ajaxForm
,必须以html
格式返回json
数据.text/html;charset=UTF-8