<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Document</title>
<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<form id="myform">
<table>
<tr>
<td>姓名:</td>
<td> <input type="text" name="name" value="旺旺"/> </td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" value="男" checked> 男
<input type="radio" name="sex" value="女"> 女
</td>
</tr>
<tr>
<td>年龄:</td>
<td>
<select name="age">
<option value="10">10</option>
<option value="20" selected>20</option>
<option value="30">30</option>
</select>
</td>
</tr>
<tr>
<td>爱好:</td>
<td>
<input type="checkbox" value="read" name="hobby" checked>读书
<input type="checkbox" value="music" name="hobby" checked>音乐
<input type="checkbox" value="draw" name="hobby" checked>画画
<input type="checkbox" value="sport" name="hobby">运动
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" id="submitBtn" value="提交" />
</td>
</tr>
</table>
</form> <script> /**序列化表单,多个value用数组存放**/
$.fn.serializeObject = function() {
var o = {};
var arr = this.serializeArray();
$.each(arr,function(){
if (o[this.name]) { //返回json中有该属性
if (!o[this.name].push) { //将已存在的属性值改成数组
o[this.name] = [ o[this.name] ];
}
o[this.name].push(this.value || ''); //将值存放到数组中
} else { //返回json中没有有该属性
o[this.name] = this.value || ''; //直接将属性和值放入返回json中
}
});
return o;
} /**序列化表单,多个value用逗号隔开**/
$.fn.serializeObject2 = function() {
var o = {};
var arr = this.serializeArray();
$.each(arr,function(){
if (o[this.name]) { //返回json中有该属性
o[this.name]=o[this.name]+','+(this.value || '');//序列化表单,多个value用逗号隔开
} else { //返回json中没有有该属性
o[this.name] = this.value || ''; //直接将属性和值放入返回json中
}
});
return o;
} /**初始化测试**/
$(function() {
$("#submitBtn").click(function() {
var params = $("#myform").serializeObject(); //将表单序列化为JSON对象
console.info(params);
var params2 = $("#myform").serializeObject2(); //将表单序列化为JSON对象
console.info(params2); });
var json={'a':'a我的#+~','b':'b','c':'c'};
var jsonStr=JSON.stringify(json);//json转字符串
var json2=JSON.parse(jsonStr);//字符串转json
console.info(jsonStr);
console.info('encodeURI:\n'+encodeURI(jsonStr));//转码非url的字符
console.info('encodeURIComponent:\n'+encodeURIComponent(jsonStr));//转码所有的特殊字符
/*encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。*/
console.info(json2);
}) </script>
</body>
</html>

Jquery表单序列化和json操作的更多相关文章

  1. Jquery表单序列化和AJAX全局事件

    Jquery表单序列化 1.必须放在form标签内: 2.控件必须有name属性: 3.控件的value值会提交到服务器: 如: <form id="form1"> & ...

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

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

  3. 扩展JQUERY 表单加载JSON数据

    $.fn.extend({ //表单加载json对象数据 setForm : function (jsonValue) { var obj = this; $.each(jsonValue, func ...

  4. jquery表单序列化

    $(function(){ $('#send').click(function(){ $.ajax({ type: "GET", url: "test.json" ...

  5. jquery将form表单序列化常json

    var formData = {};$.each(form.serializeArray(),function(i, item){ formData[item.name] = item.value;} ...

  6. jquery 表单序列化

    1.序列化为URL 编码文本字符串 var serialize = $("form[name=testForm]").serialize(); console.log(serial ...

  7. 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。

    http://zhengxinlong.iteye.com/blog/848712 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name& ...

  8. jquery将表单序列化

    在工作中经常要将表单数据通过ajax提交,所以需要将表单序列化为json对象. 已经有大神提供了,以前一直百度,现在决定抄过来收藏一下,方便以后自己用,尊重原创,文章转载自:http://www.cn ...

  9. jquery扩展方法(表单数据格式化为json对象)

    1.jquery扩展方法(表单数据格式化为json对象) <script type="text/javascript"> // 将表单数据序列化为一个json对象,例如 ...

随机推荐

  1. linux内核启动修复

    linux内核启动修复 首先看一下linux内核重要文件grub.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # gru ...

  2. MySQL binlog-server搭建

    MySQL binlog-server搭建 binlog在备份中起着至关重要的作用,备份binlog文件时,只能先在本地备份,然后才能传送到远程服务器上.从MySQL5.6版本后,可以利用mysqlb ...

  3. (13)zabbix External checks 外部命令检测

    1.  概述 zabbix server运行脚本或者二进制文件来执行外部检测,外部检测不需要在被监控端运行任何agentd item key语法如下: ARGUMENT DEFINITION scri ...

  4. netfilter 和 iptables

    http://blog.chinaunix.net/uid/23069658/cid--1-list-4.html 洞悉linux下的Netfilter&iptables  系列,有一到十六, ...

  5. (转)Objective-C语言--属性和实例变量

    本文转自http://blog.csdn.net/addychen/article/details/39525681 使用Objective-C一段时间了,一直没有弄清楚在Objective-C中属性 ...

  6. C++中四种强制类型转换方式

    类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比 ...

  7. lombok安装、配置、使用

    eclipse安装Lombok 运行安装: java -jar ${path}\lombok.jar 选择IDE所在路径点击Install/Update即可使用. 手动安装1. 将lombok.jar ...

  8. java读写串口数据

    本博文参考自https://www.cnblogs.com/Dreamer-1/p/5523046.html 最近接触到了串口及其读写,在此记录java进行串口读写的过程. 1.导入串口支持包 需要下 ...

  9. PYDay2-linux基础\常用命令

    一.linux 理念 一切皆文件 二.常用命令(150) 2.1.rsync rsync是类unix系统下的数据镜像备份工具, 它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原 ...

  10. STM32F407 ADC 个人笔记

    1. ADC概述(STM32F4xx系列) 3 个 ADC 可分别独立使用 也可使用双重/三重模式(提高采样率) 2 个通道组 规则通道:相当于正常运行的程序 注入通道:相当于中断(可以打断规则通道的 ...