JavaScript--表单的序列化
来源:互联网 发布:linux ssh 目录结构图 编辑:程序博客网 时间:2024/05/16 11:18
一、关于表单序列化
在浏览器中使用Ajax向服务器提交表单的时候会对表单进行一个序列化的过程,也就是按照一定规则,利用表单字段的type属性,将name和value属性拼接成字符串发送给服务器。
二、表单提交的规则
- 对表单字段的名称和值进行URL编码,使用和号(&)分隔
- 对于禁用的表单字段默认执行不发送
- 对于复选框和单选按钮只发送选中的部分
- 不发送type为“reset”和“button”的按钮
- < select>元素的值就是选中< option>元素的value特性的值。如果< option>元素没有value特性,则是< option>元素的文本值
实现过程:
function serialize(form) { if (!form || form.nodeName.toUpperCase() !== 'FORM') { return; } var result = []; var i, len; var field, fieldName, fieldType; for (i = 0, len = form.length; i < len; ++i) { field = form.elements[i]; fieldName = field.name; fieldType = field.type; if (field.disabled || !fieldName) { continue; } // enf if switch (fieldType) { case 'text': case 'password': case 'hidden': case 'textarea': result.push(encodeURIComponent(fieldName) + '=' + encodeURIComponent(field.value)); break; case 'radio': case 'checkbox': if (field.checked) { result.push(encodeURIComponent(fieldName) + '=' + encodeURIComponent(field.value)); } break; case 'select-one': case 'select-multiple': for (var j = 0, jLen = field.options.length; j < jLen; ++j) { if (field.options[j].selected) { result.push(encodeURIComponent(fieldName) + '=' + encodeURIComponent(field.options[j].value || field.options[j].text)); } } // end for break; case 'file': case 'submit': break; default: break; } // end switch } // end for return result.join('&'); }
参考内容:
【1】JavaScript高级编程第三版
0 0
- JavaScript--表单的序列化
- JavaScript表单序列化
- 用javascript序列化表单
- JavaScript示例十(表单序列化)
- 说说 JavaScript 实现表单序列化的解决方案(附源码)
- jquey表单序列化
- Jqeury 表单序列化
- Ajax序列化表单
- 网页表单序列化
- 表单序列化
- jquery表单序列化
- $(" ").serializeArray() 序列化表单
- 表单序列化
- ajax表单序列化
- form表单序列化
- 表单序列化问题
- js表单序列化
- ionic 表单序列化
- [C++]bitset特殊用法
- 线程
- java之二分法递归显示数列
- nodejs,npm appium win7安装过程
- Fast unfolding of communities in large networks
- JavaScript--表单的序列化
- 最全动画教程实例-实现简单的树形动画效果
- iOS开发中Settings.bundle的使用
- 桌面快速启动软件AltRun----赶快使得你的桌面变整洁吧
- linux下开发的头文件
- Python学习小记2
- 关于View的获取位置的api
- 查找指定端口被哪个进程占用&&恢复删除的文件
- Lombok使用说明