Javascript表单序列化原理及实现代码详解


Posted in Javascript onOctober 30, 2020

随着 Ajax 的出现,表单序列化已经成为一种常见需求。在 JavaScript 中,可 以利用表单字段的 type 属性,连同 name 和 value 属性一起实现对表单的序列化。在编写代码之前, 有必须先搞清楚在表单提交期间,浏览器是怎样将数据发送给服务器的。

​1. 对表单字段的名称和值进行 URL 编码,使用和号(&)分隔。

2. 不发送禁用的表单字段。

3. 只发送勾选的复选框和单选按钮。

4. 不发送 type 为"reset"和"button"的按钮。

5. 多选选择框中的每个选中的值单独一个条目。

6. 在单击提交按钮提交表单的情况下,也会发送提交按钮;否则,不发送提交按钮。

7. <select>元素的值,就是选中的<option>元素的 value 特性的值。如果<option>元素没有 value 特性,则是<option>元素的文本值。

在表单序列化过程中,一般不包含任何按钮字段,因为结果字符串很可能是通过其他方式提交的。除此之外的其他上述规则都应该遵循。

基本的表单序列化可以通过遍历表单元素实现,实例代码如下:

function serialize(form){
 var params = [];
 var eles = form.elements;
 
 for (var i = 0;i<ele.length;i++){
  let field = ele[i];
  switch(field.type){
   case "file": 
   case "submit":
   case "reset": 
   case "button":
    break;
   case "radio":
   case "checkbox":
    if(!field.checked){
     break;
    }
    default:
     //不包含没有名字的表单字段 
     if (field.name.length){ 
      parts.push(encodeURIComponent(field.name) + "=" + 
      encodeURIComponent(field.value)); 
     }
  }
 }
  return parts.join("&");
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQueryUI写一个调整分类的拖放效果实现代码
May 10 Javascript
javascript parseInt() 函数的进制转换注意细节
Jan 08 Javascript
jquery浏览器滚动加载技术实现方案
Jun 03 Javascript
javascript父、子页面交互技巧总结
Aug 08 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
node网页分段渲染详解
Sep 05 Javascript
vue教程之toast弹框全局调用示例详解
Aug 24 Javascript
jQuery选择器中的特殊符号处理方法
Sep 08 jQuery
微信小程序多音频播放进度条问题
Aug 28 Javascript
在React项目中使用Eslint代码检查工具及常见问题
Oct 10 Javascript
微信小程序canvas绘制圆角base64图片的实现
Aug 18 Javascript
解决Vue-cli无法编译es6的问题
Oct 30 #Javascript
Vue2.0 ES6语法降级ES5的操作
Oct 30 #Javascript
Vue自定义表单内容检查rules实例
Oct 30 #Javascript
探索node之事件循环的实现
Oct 30 #Javascript
使用TS来编写express服务器的方法步骤
Oct 29 #Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 29 #Javascript
vue3.0搭配.net core实现文件上传组件
Oct 29 #Javascript
You might like
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
iOS10推送通知开发教程
2016/09/19 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
JavaScript的Function详细
2006/11/14 Javascript
Javascript之文件操作
2007/03/07 Javascript
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
微信小程序实现拖拽功能
2019/09/26 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
python清除字符串中间空格的实例讲解
2018/05/11 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
python 实现return返回多个值
2019/11/19 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
python中二分查找法的实现方法
2020/12/06 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
大二学生学习个人自我评价
2014/01/19 职场文书
监考失职检讨书
2015/01/26 职场文书
公司岗位说明书
2015/10/08 职场文书
php 原生分页
2021/04/01 PHP
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技