锋利的jQuery-6--序列化函数serialize()和serializeArray()在表单提交中的作用
在通过jQuery ajax提交表单的时候,通常用下边的方法获取表单内容。
var form = 'add-account-form'; //表单id
$('#' + form).submit(function() {
var account = {
'user_id':'',
'partner_name':'',
'site_url': '','product_url':''
};
for(var i in account) {
if (account.hasOwnProperty(i)) { //hasOwnProperty函数判断对象中是否含有某个成员。
if ($('#' + form + ' input[name=' + i + ']').length > 0) account[i] = $('#' + form + ' input[name=' + i + ']').val(); //此处只能用account[i]的形式,不能用account.i
if ($('#' + form + ' select[name=' + i + ']').length > 0) account[i] = $('#' + form + ' select[name=' + i + ']').val();
}
}
$.post('/pc/account', {'data':account, 'op':'add'}, function(data) { }); });
1.serialize()
可以通过jquery的serialize方法,因为$.get, $.post, $.ajax的数据部分可以传映射形式{"name" : "lee", "age" : "18"},也可以传字符串形式name=lee&age=18。
var form = 'add-account-form';
$('#' + form).submit(function() {
var account = $(this).serialize(); //获取表单的所有name值做为key,val做为value的字符串,用&连接。
$.post('/pc/account', {'data':account, 'op':'add'}, function(data) { }); });
注意:
用字符串方式的时候需要注意对字符编码(中文),用serialize()方法会自动编码。
serialize()方法作用于jQuery对象,所以不光表单能用,其他选择器也能用,例如 $(":checkbox, :radio").serialize();
<input type="checkbox" name="check" value="中国人"/> 中国人
<input type="checkbox" name="check" value="美国人" />美国人 /* 如果两个多选框都被选中的话,serialize方法不会合并值,而是生成好几个同名的值 */
$("form").serialize(); //check=%E4%B8%AD%E5%9B%BD%E4%BA%BA&check=%E7%BE%8E%E5%9B%BD%E4%BA%BA //生成check=***&check=***形式,并且中文被编码
2.serializeArray()
该方法不是返回字符串,而是将dom元素序列化后,返回json格式。
var f = $(":checkbox, :radio").serializeArray(); //获得多选框和单选框的值
console.log(f); //在控制台查看
$.each(f, function(i, field){ //f是一个对象,可以通过$.each方法遍历
$("$result").append(field.value + " , ");
})
3.$.param()
他是serialize()方法的核心,用来对数组和对象按照key/value形式序列化。
var obj = {a:1,b:2,c:3}
var s = $.param(obj); //a=1&b=2&c=3
锋利的jQuery-6--序列化函数serialize()和serializeArray()在表单提交中的作用的更多相关文章
- 使用jquery form插件进行异步带文件的表单提交
引入form插件与jquery 的js文件后 获取表单的jq对象 然后.ajaxSubmit提交表单即可 实现添加品牌的异步表单提交 function addBarandImg(formId) { $ ...
- jQuery的序列化元素 serialize()方法 serializeArray()方法 param()方法
当提交的表单元素较多时用serialize()方法,serialize()方法也是作用于一个jQuery的对象,它能够将DOM元素内容序列化为字符串,用于Ajax请求. serialize() 方法通 ...
- jQuery使用serialize(),serializeArray()方法取得表单数据+字符串和对象类型两种表单提交的方法
原始form表单值获取方式(手动): $.ajax({ type: "POST", url: "ajax.php", data: "Name=摘取天上 ...
- jquery表单提交获取数据(带toast dialog)
最近写了一个召集令,传统表单提交注册.写写遇到的费时间的点与解决办法 git项目地址:form-demo(针对于手机版,懒人可以直接使用,有排版和样式) demo使用Jquery,toast使用jqu ...
- 浏览器下载/导出文件 及jQuery表单提交
1 比如以下按钮, 用于导出文件,如EXCEL文件. <li> <button class="whiteBg btn2" onclick="doExp( ...
- jquery插件-表单提交插件-jQuery.Form
1.介绍 JQuery Form插件是一款强大的Ajax表单提交插件,可以简单方便的实现让我们的表单 由传统的提交方式转换成Ajax无刷新提交! 他提供了两个核心的方法ajaxForm以及ajaxSu ...
- jQuery最简单的表单提交方式
第一步:绑定事件 常用的与ajax相关的事件参考如下: 1.$(selector).click(function) 2.$(selector).change(function) 3.$(selecto ...
- jquery.form.js(ajax表单提交)
Form插件地址: 官方网站:http://malsup.com/jQuery/form/ 翻译地址:http://www.aqee.net/docs/jquery.form.plugin/jquer ...
- jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用
一.jQuery Form的其他api 1. formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...
随机推荐
- 在opencv3中实现机器学习之:利用正态贝叶斯分类
opencv3.0版本中,实现正态贝叶斯分类器(Normal Bayes Classifier)分类实例 #include "stdafx.h" #include "op ...
- 用Canvas玩3D:点-线-面
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 玩Canvas玩了有两三个礼拜了,平面的东西玩来玩去也就那样,所以就开始折腾3D了. 因为Canvas画布终究还是平面的,所以要有3D就得 ...
- Ajax基础详解1
Ajax也是前端必备技能了,学习任何语言,都需要以理论为基础的大量实践才能真正学会,之前学了Ajax很多遍,因为缺乏大量实践,总是会忘.所以不实践是失败之母...当然理论基础也很重要啦,今天谈谈我对A ...
- 同步git修改文件到远端服务器脚本
#!/usr/bin/perl -w @files=`git status -s` ; @sync_files = (); foreach (@files) { ); # 固定前2个字符为状态 + 1 ...
- libtool: Version mismatch error 解决
在编译一个软件的时候,在 ./configure 和 make 之后可能会出现如下错误: libtool: Version mismatch error. This is libtool 2.4. ...
- grootJS ui控件定义
index13.html <html><head> <title>ui控件定义</title> <script src="jquery- ...
- CSS 外边距合并
外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距. 合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 外边距合并 外边距合并(叠加)是一个相当简单的概念.但是,在实践中对网 ...
- JS开发HTML5游戏《神奇的六边形》(四)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- ajax请求模拟登录
前台 @if (Session["username"] != null) { <div class="login"> <span style= ...
- 虚拟机去混杂模式与 vlan in vxlan 特性
1. 去混杂模式 1.1 背景 混杂模式(Promiscuous Mode)是指一台机器能够接收所有经过它的数据流,而不论其目的地址是否是它.是相对于通常模式(又称“非混杂模式”)而言的. 这被网络管 ...