<form class="form-horizontal" role="form" id="myform" action="" method="post">
<div class="form-group">
<label for="email" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="email" name="user[email]" placeholder="Email" value="demo@example.com">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">技能</label>
<div class="col-sm-10">
<label class="checkbox-inline">
<input type="checkbox" name="user[skill][]" value="html5"> HTML5
</label>
<label class="checkbox-inline">
<input type="checkbox" name="user[skill][]" value="javascript" checked> Javascript
</label>
<label class="checkbox-inline">
<input type="checkbox" name="user[skill][]" value="PHP" checked> PHP
</label>
<label class="checkbox-inline">
<input type="checkbox" name="user[skill][]" value="Python"> Python
</label>
<label class="checkbox-inline">
<input type="checkbox" name="user[skill][]" value="MySQL" checked> MySQL
</label>
<label class="checkbox-inline">
<input type="checkbox" name="user[skill][]" value="Redis"> Redis
</label>
</div>
</div>
<div class="form-group">
<label for="email" class="col-sm-2 control-label">月薪</label>
<div class="col-sm-10">
<select class="form-control" name="user[salary]">
<option value="5000">5000以下</option>
<option value="5000-10000">5000-10000</option>
<option value="10000-20000">10000-20000</option>
<option value="20000">20000以上</option>
</select>
</div>
</div>
<div class="form-group">
<label for="email" class="col-sm-2 control-label">自我评价</label>
<div class="col-sm-10">
<textarea class="form-control" name="user[intro]" rows="3"></textarea>
</div>
</div> <div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default" id="subbtn">提交</button>
</div>
</div>

首先载入jquery库和jquery.serialize-object.js,在我打包的源码中这两个js文件,其中jQuery是引用的CDN资源。

<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="js/jquery.serialize-object.min.js"></script>
$(function(){
$(document).on('click', '#subbtn', function(event) {
event.preventDefault(); var json_data = $('#myform').serializeJSON();
$.post('post.php', json_data, function(data) {
console.log(data);
});
});
});

上述代码中,我们只需要使用$('#myform').serializeJSON()就可以获得整个表单所有字段的数据,并以json格式序列化,这时post的数据变成以下格式:

{"user":{"email":"demo@example.com","skill":["html5","javascript","PHP","MySQL"],"salary":"5000","intro":"的撒的\r\n天654\r\n第三方"}}

得到的是一个json格式的数据,看起来是不是很爽了。

当然jquery.serialize-object.js还提供了一个序列化对象的方法:serializeObject,使用如下代码可以得到一个javascript object对象:

var obj_data = $('#myform').serializeObject();

PHP接收到post数据后,可以将其转成数组就可以很好的操作数组了。

更多有关表单数据序列化的内容,请参考jQuery Serialize Object项目github地址:https://github.com/macek/jquery-serialize-object

marioizquierdo/jquery.serializeJSON

https://github.com/marioizquierdo/jquery.serializeJSON

技术交流QQ群:15129679

将复杂form表单序列化serialize-object.js的更多相关文章

  1. form 表单序列化 serialize

    在开发中有时需要在js中提交form表单数据,就需要将form表单进行序列化. jquery提供的serialize方法能够实现. $("#searchForm").seriali ...

  2. jquery ajax(5)form表单序列化

    form表单序列化<script type="text/javascript"> $(function(){ $("#send").click(fu ...

  3. form表单序列化数据之后,追加额外数据

    form表单序列化数据之后追加额外数据多使用在js中,下面是追加额外数据的代码: <span style="font-size:18px;">$.param({'inv ...

  4. 原生js实现form表单序列化

    当我们有form表单而且里面的表单元素较多时,咱们总不能一个个去获取表单元素内的值来进行拼接吧!这样会很让人蛋疼!为了方便与后台交互并且提高自己的开发效率,并且不让你蛋疼:我们一起用原生来写一个表单序 ...

  5. 原生JS实现表单序列化serialize()

    有一个form表单,要用AJAX后台提交,原来想拼接json,但是数据多了麻烦,不灵活. 用HTML5的FormData来初始化表单 var formdata=new FormData(documen ...

  6. js将form表单序列化[json字符串、数组、对象]

    1.序列化为字符串 $("#Form").serialize();//name=zhangsan&sex=1&age=20   2.序列化为数组 var formD ...

  7. jQuery实现form表单序列化转换为json对象功能示例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  8. 提交Form表单,submit之前做js判断处理

    效果: 在点击提交按钮时,首先进行js判断, 如果不符合条件,则alert出提示信息,并return false. 主要点就在于给form表单添加一个onsubmit事件. 在onsubmit事件中定 ...

  9. form表单序列化serialize-object.js

    <form class="form-horizontal" role="form" id="myform" action=" ...

随机推荐

  1. 正则表达式匹配完整img标签php实现

    处理html富文本的时候,碰到批量处理img标签,要把img标签格式化,并且去除不用的代码,class,各种data-等,首先想到使用正则匹配,然后处理匹配到的img标签和参数,经过一番尝试终于搞定了 ...

  2. hdu 1231

    最大连续子序列 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Statu ...

  3. php socket获取数据类

    <?php define("CONNECTED", true); define("DISCONNECTED", false); /** * Socket ...

  4. 20145301&20145321&20145335实验一

    这次实验我的组员为:20145301赵嘉鑫.20145321曾子誉.20145335郝昊 实验内容详见:实验一报告

  5. 配置ubuntu 16.04.1 LTS odoo 10.0开发环境

    使用VMware Fusion 8.5.0创建ubuntu 64bit虚拟机:使用ubuntu-16.04.1-desktop-amd64.iso镜像缺省安装ubuntu,用户名odoo,密码1234 ...

  6. [stm32][ucos] 1、基于ucos操作系统的LED闪烁、串口通信简单例程

    * 内容简述: 本例程操作系统采用ucos2.86a版本, 建立了5个任务            任务名                                             优先级 ...

  7. [C++] C/C++结构体的区别

    C/C++结构体的区别 >_<:C中的结构体和C++中结构体的不同之处: 在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数. >_<: ...

  8. Windows 8.1 开发过程中遇到的小问题(2)

    又是在Windows 8.1 的分享功能,再次出现错误: A COM call (IID: ***, method index: *) to an ASTA (thread *) was blocke ...

  9. [备忘][转]rsync使用时的常见问题

    sync使用时的常见问题: 错误1: rsync: read error: Connection reset by peer (104) rsync error: error in rsync pro ...

  10. C#与数据库访问技术总结(十二)数据阅读器(DataReader)2

    遍历数据阅读器中的记录 当ExecuteReader方法返回DataReader对象时,当前光标的位置在第一条记录的前面. 必须调用阅读器的Read方法把光标移动到第一条记录,然后,第一条记录将变成当 ...