Javascript表单序列化原理及实现代码详解
随着 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("&"); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
jQuery序列化后的表单值转换成Json
小朋友有一个表单,他想以Json的方式获取到表单的内容.小朋友尝试了以下方式. 通过$("#form").serialize()可以获取到序列化的表单值字符串. 例如: a=1&b=2&c=3&d=4&e=5 通过$("#form").serializeArray()输出以数组形式序列化表单值. [ {name: 'firstname', value: 'Hello'}, {name: 'lastname', value: 'Worl
-
原生js实现form表单序列化的方法
当我们有form表单而且里面的表单元素较多时,咱们总不能一个个去获取表单元素内的值来进行拼接吧!这样会很让人蛋疼!为了方便与后台交互并且提高自己的开发效率,并且不让你蛋疼:我们一起用原生来写一个表单序列化方法: 先介绍一下jquery中有相应的表单序列化的方法: 1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用一一列举出每一个参数.只需将data参数设置为
-
jquery序列化form表单使用ajax提交后处理返回的json数据
1.返回json字符串: 复制代码 代码如下: /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try { servletResponse.setContentType("text/plain;charset=UTF-8"); pw = servletResponse.getWrit
-
js表单处理中单选、多选、选择框值的获取及表单的序列化
本文总结了下在表单处理中单选.多选.选择框值的获取及表单的序列化,写成了一个对象.如下: var formUtil = { // 获取单选按钮的值,如有没有选的话返回null // elements为radio类的集合的引用 getRadioValue:function(elements) { var value = null; // null表示没有选中项 // 非IE浏览器 if(elements.value != undefined && elements.value != '')
-
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
表单序列化类型的数据是指url传递的数据的格式,形如"key=value&key=value&key=value"这样的key/value的键值对.一般来说使用jQuery的$.fn.serialize函数能达到这样的效果.如何将这样的格式转化为对象? 我们知道使用jQuery的$.fn.serializeArray函数得到的是一个如下结构的对象 [ { name: "startTime" value: "2015-12-02 00:00:
-
jQuery实现form表单序列化转换为json对象功能示例
本文实例讲述了jQuery实现form表单序列化转换为json对象功能.分享给大家供大家参考,具体如下: 做web前端开发时,需要ajax提交大量表单数据,如果一个个form字段拼接很费劲也容易出错,下面方法可解决这个问题 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>jquery form序列化转换为json对象</title> <
-
js表单中选择框值的获取及表单的序列化
本文特意为js表单中选择框值的获取及表单的序列化做了下总结,写成了一个对象,分享给大家,欢迎大家学习. var formUtil = { // 获取单选按钮的值,如有没有选的话返回null // elements为radio类的集合的引用 getRadioValue:function(elements) { var value = null; // null表示没有选中项 // 非IE浏览器 if(elements.value != undefined && elements.value
-
jQuery实现form表单元素序列化为json对象的方法
本文实例讲述了jQuery实现form表单元素序列化为json对象的方法.分享给大家供大家参考,具体如下: 这段代码序列化form表单元素为json对象: <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml> <head> <title>jQuery扩展--form序列化到json对象</title> <meta http-equiv=Content-Type content=&
-
Javascript表单序列化原理及实现代码详解
随着 Ajax 的出现,表单序列化已经成为一种常见需求.在 JavaScript 中,可 以利用表单字段的 type 属性,连同 name 和 value 属性一起实现对表单的序列化.在编写代码之前, 有必须先搞清楚在表单提交期间,浏览器是怎样将数据发送给服务器的. 1. 对表单字段的名称和值进行 URL 编码,使用和号(&)分隔. 2. 不发送禁用的表单字段. 3. 只发送勾选的复选框和单选按钮. 4. 不发送 type 为"reset"和"button"
-
jQuery.validate.js表单验证插件的使用代码详解
Validate Validate是基于jQuery的一款轻量级验证插件,内置丰富的验证规则,还有灵活的自定义规则接口,HTML.CSS与JS之间的低耦合能让您自由布局和丰富样式,支持input,select,textarea的验证. 效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="vi
-
Mvc提交表单的四种方法全程详解
一,MVC HtmlHelper方法 1. Html.BeginForm(actionName,controllerName,method,htmlAttributes){} 2. BeginRouteForm 方法 (HtmlHelper, String, Object, FormMethod) 二,传统Form表单Aciton属性提交 三,Jquery+Ajax 提交表单 四,MVC Controller控制器和表单参数传递 MVC HtmlHelper方法 一,Html.BeginForm
-
bootstrap中的 form表单属性role="form"的作用详解
html 里面的 role 本质上是增强语义性,当现有的HTML标签不能充分表达语义性的时候,就可以借助role来说明.通常这种情况出现在一些自定义的组件上,这样可增强组件的可访问性.可用性和可交互性. role的作用是描述一个非标准的tag的实际作用.比如用div做button,那么设置div 的 role="button",辅助工具就可以认出这实际上是个button 比如, <div role="checkbox" aria-checked="c
-
微信小程序中form 表单提交和取值实例详解
微信小程序中form 表单提交和取值实例详解 我们知道,如果我们直接给 input 添加 bindinput,比如:<input bindinput="onUsernameInput" />,那么可以在 onUsernameInput 中直接使用 e.detail.value,即: onUsernameInput : function(e) { e.detail.value; } 但是,如果有多个输入控件,我们不可能为每个控件添加 bindinput.bindchange
-
bootstrap中的 form表单属性role="form"的作用详解
html 里面的 role 本质上是增强语义性,当现有的HTML标签不能充分表达语义性的时候,就可以借助role来说明.通常这种情况出现在一些自定义的组件上,这样可增强组件的可访问性.可用性和可交互性. role的作用是描述一个非标准的tag的实际作用.比如用div做button,那么设置div 的 role="button",辅助工具就可以认出这实际上是个button 比如, <div role="checkbox" aria-checked="c
-
Ant Design_Form表单上传文件组件实现详解
目录 背景 实现 问题1: 问题2: tip1:注意一下新增和修改时校验方法 tip2: 注意一下beforeUpload的返回值 背景 需要实现的需求:在一个表单提交中,需要提交各种组件的提交信息,其中包括上传文件:一般呢,我们会在选择文件的时候将文件先传到服务器,拿到文件的URL,在提交表单的时候传的其实是文件的URL: 刚开始,对文件没有必填的校验,是比较简单的:但是后来要求文件是必传的,需要加上文件的校验,就暴漏了一些小问题: 实现 首先,先对Upload组件加上必传的校验 rules=
-
jQuery.Validate表单验证插件的使用示例详解
jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求. 请在这里查看示例 validate示例 示例包含 验证错误时,显示红色错误提示 自定义验证规则 引入中文错误提示 重置表单需要执行2句话 源码示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <
-
vue+elementUI动态增加表单项并添加验证的代码详解
参考elementUI官网以及网上的其他一些资料.话不多说,直接贴代码. htmt部分: <div id="app" style="width: 500px;"> <el-form :model="environmentForm" ref="environmentForm"> <el-row :gutter="24" v-for=&quo
-
jquery表单验证插件validation使用方法详解
一.如何使用 引入js文件 <script src="jquery.js"></script> <script src="jquery.validate-1.13.1.js"></script> 编写html页面,这里仅以用户名.密码为例 <body> <form id="demoForm"> <fieldset> <legend>用户登录</l
随机推荐
- 深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
- Java:DocumentBuilderFactory调用XML的方法实例
- SpringMVC结合天气api实现天气查询
- 深入理解Spring事务原理
- java实现二维数组转json的方法示例
- Js日期选择器并自动加入到输入框中示例代码
- Android布局之TableLayout表格布局
- 利用pyinstaller或virtualenv将python程序打包详解
- 浅析C#中静态方法和非静态方法的区别
- 用Kotlin实现Android点击事件的方法
- Javascript操作URL函数修改版
- php重定向的三种方法分享
- jquery中animate的stop()方法作用实例分析
- oracle使用instr或like方法判断是否包含字符串
- Activity/Fragment结束时处理异步回调的解决方案
- 解析C语言中如何正确使用const
- 在vs2010中调试javascript代码方法
- 深入探讨Unit Testing in Android
- SpringBoot四大神器之Actuator的使用小结
- Django实现简单分页功能的方法详解