2015-06-18
以JSON编码格式提交表单数据是HTML5对WEB发展进化的又一大贡献,以前我们的HTML表单数据是通过key-value方式传输的服务器端,这种形式的传输对数据组织缺乏管理,形式十分原始。而新出现的JSON格式提交表单数据方法,将表单里的所有数据转化的具有一定规范的JSON格式,然后传输的服务器端。服务器端接收到的数据是直接可以使用的合格JSON代码。如何声明以JSON格式提交表单
大家应该对如何用表单上传一个文件的写法很熟悉,它需要在HTML中form标记上添加 enctype="multipart/form-data" 声明,就是告诉浏览器要按上传文件模式发送表单数据。而JSON格式提交表单的声明与此类似,它的写法是: enctype='application/json'。
对老式浏览器的兼容
以JSON格式提交表单是HTML5中一种很新的规范,只有实现了这些规范的现代浏览器才能识别 enctype='application/json'的语义,才能正确的将表单数据打包成JSON格式。而对于一些老式浏览器,以及还未实现这些标准的浏览器,它们无法识别 enctype='application/json'代表什么,于是表单的enctype会自动退化成application/x-www-form-urlencoded缺省编码格式。服务器端代码可以根据enctype的值来判断如何接收数据。
JSON编码格式提交表单的格式范例例1 基本用法
<form enctype='application/json'> <input name='name' value='Bender'> <select name='hind'> <option selected>Bitable</option> <option>Kickable</option> </select> <input type='checkbox' name='shiny' checked> </form> // 生成的Json数据是 { "name": "Bender" , "hind": "Bitable" , "shiny": true }
例2 当表单存在多个重名的表单域时,按JSON数组编码
<form enctype='application/json'> <input type='number' name='bottle-on-wall' value='1'> <input type='number' name='bottle-on-wall' value='2'> <input type='number' name='bottle-on-wall' value='3'> </form> // 生成的Json数据是 { "bottle-on-wall": [1, 2, 3] }
例3 表单域名称以数组形成出现的复杂结构
<form enctype='application/json'> <input name='pet[species]' value='Dahut'> <input name='pet[name]' value='Hypatia'> <input name='kids[1]' value='Thelma'> <input name='kids[0]' value='Ashley'> </form> // 生成的Json数据是 { "pet": { "species": "Dahut" , "name": "Hypatia" } , "kids": ["Ashley", "Thelma"] }
例4 在上面的例子中,缺失的数组序号值将以null替代
<form enctype='application/json'> <input name='hearbeat[0]' value='thunk'> <input name='hearbeat[2]' value='thunk'> </form> // 生成的Json数据是 { "hearbeat": ["thunk", null, "thunk"] }
例5 多重数组嵌套格式,嵌套层数无限制
<form enctype='application/json'> <input name='pet[0][species]' value='Dahut'> <input name='pet[0][name]' value='Hypatia'> <input name='pet[1][species]' value='Felis Stultus'> <input name='pet[1][name]' value='Billie'> </form> // 生成的Json数据是 { "pet": [ { "species": "Dahut" , "name": "Hypatia" } , { "species": "Felis Stultus" , "name": "Billie" } ] }
例6 真的,没有数组维度限制!
<form enctype='application/json'> <input name='wow[such][deep][3][much][power][!]' value='Amaze'> </form> // 生成的Json数据是 { "wow": { "such": { "deep": [ null , null , null , { "much": { "power": { "!": "Amaze" } } } ] } } }
例7 文件上传
<form enctype='application/json'> <input type='file' name='file' multiple> </form> // 假设你上传了2个文件, 生成的Json数据是: { "file": [ { "type": "text/plain", "name": "dahut.txt", "body": "REFBQUFBQUFIVVVVVVVVVVVVVCEhIQo=" }, { "type": "text/plain", "name": "litany.txt", "body": "SSBtdXN0IG5vdCBmZWFyLlxuRmVhciBpcyB0aGUgbWluZC1raWxsZXIuCg==" } ] }
山海剑途游戏下载v1.0.2 安卓版
角色扮演 5.97MB
下载
幻唐志逍遥外传官方版下载v5.2.28 安卓版
其它手游 1560.57MB
下载
怪物联萌官方版下载v10.5 安卓版
休闲益智 331.52MB
下载
手动挡停车场2026最新版本下载v4.8.17.3 安卓版
赛车竞速 921.2MB
下载
放置奇兵猫耳版本下载v1.12.1 安卓版
角色扮演 536.78MB
下载
斗鱼云游戏app下载v8.0.2.0 安卓版
其它手游 117.49MB
下载
时空猎人银汉官方正版下载v5.2.1105 安卓原版
角色扮演 1806.78MB
下载星球重启官方正版下载v1.3.17 安卓最新版
射击枪战 1984.78MB
下载最强nba国际版下载v1.51.621 安卓版
下载
机械迷城手机免费版完整版下载v5.0.1 安卓不付费版
下载
极品飞车集结手游下载v1.7.154.2653789 安卓最新版
下载
某某朝的女子乐坊游戏下载v4.0.0.7 安卓版
下载
梦想协奏曲少女乐团派对手游下载v9.1.0 安卓最新版
下载
椿之歌手游官方版下载v1.1.1 安卓版
下载
模拟地铁游戏官方版下载v1.0.31 安卓免费正版
下载
小小曹操传手游下载v1.0.9 安卓版
下载