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.24 安卓版
其它手游 109.7M
下载生存闯关测试服下载v1.11.94 安卓版
其它手游 212.1M
下载三体乱纪元大冒险手游下载v1.0 安卓版
其它手游 13.8M
下载缩放大师官方版下载v1.2.0 安卓版
其它手游 131.1M
下载火柴人联盟释放双手游戏下载v1.17.1 安卓最新版
其它手游 84.9M
下载木乃伊法老王归来手机版下载v1.6 安卓版
其它手游 108.6M
下载少年侠客完整版下载v3.5.9 最新安卓版
其它手游 126.5M
下载魔女之恋内衣版下载v3.6 安卓版
其它手游 489.0M
下载我的安吉拉4399版本下载v5.3.0.270 安卓最新版
下载
三国伏魔录单机版下载v4.9.0 安卓版
下载
求仙斗破仙帝官方版下载v1.21.39 安卓最新版
下载
王者史诗手机游戏下载v1.0.0 安卓最新版
下载
上古神诀手游下载v2.2.0 安卓版
下载
乱时空手游下载v1.0.1 安卓版
下载
放置奇兵乐游客户端下载v1.11.0 安卓版
下载
妖怪哪里跑内购破解版下载v1.5.0 安卓版
下载