以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数组编码
XML/HTML Code复制内容到剪贴板
- <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 表单域名称以数组形成出现的复杂结构
XML/HTML Code复制内容到剪贴板- <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替代
XML/HTML Code复制内容到剪贴板
- <form enctype='application/json'>
 - <input name='hearbeat[0]' value='thunk'>
 - <input name='hearbeat[2]' value='thunk'>
 - </form>
 - // 生成的Json数据是
 - {
 - "hearbeat": ["thunk", null, "thunk"]
 - }
 
例5 多重数组嵌套格式,嵌套层数无限制
XML/HTML Code复制内容到剪贴板
- <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 真的,没有数组维度限制!
XML/HTML Code复制内容到剪贴板
- <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 文件上传
XML/HTML Code复制内容到剪贴板
- <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=="
 - }
 - ]
 - }
 
HTML5,JSON
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
                        


