Submitting form data in JSON encoding format is another major contribution of HTML5 to the development and evolution of WEB. In the past, our HTML form data was transmitted on the server side through key-value method. This form of transmission lacked management of data organization. The form is very primitive. The newly emerged method of submitting form data in JSON format converts all data in the form into a JSON format with certain specifications, and then transmits it to the server. The data received by the server is qualified JSON code that can be used directly. How to declare form submission in JSON format
Everyone should be familiar with how to use a form to upload a file. It requires adding the enctype="multipart/form-data" statement to the form tag in HTML, which tells the browser to send the form data in file upload mode. The declaration of the JSON format submission form is similar to this. It is written as: enctype='application/json'.
Compatibility with older browsers
Submitting forms in JSON format is a very new specification in HTML5. Only modern browsers that implement these specifications can recognize the semantics of enctype='application/json' and correctly package form data into JSON format. For some old browsers, as well as browsers that have not yet implemented these standards, they cannot recognize what enctype='application/json' represents, so the form's enctype will automatically degrade to the application/x-www-form-urlencoded default encoding. Format. Server-side code can determine how to receive data based on the value of enctype.
Format example of JSON encoding format submission form
Example 1 Basic usage
XML/HTML CodeCopy content to clipboard
- <form enctype='application/json'>
-
<input name='name' value='Bender'>
-
<select name='hind' >
-
<option selected>Bitable< ;/option>
-
<option>Kickableoption>
-
select>
-
<input type='checkbox' name='shiny' checked>
-
form>
-
- //The generated Json data is
- {
- "name": "Bender"
- , "hind": "Bitable"
- , "shiny": true
- }
Example 2 When there are multiple form fields with the same name in the form, encode them as JSON arrays
XML/HTML CodeCopy content to clipboard
- <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>
-
- // The generated Json data is
- {
- "wow": {
- "such": {
- "deep": [
-
, null -
, null -
, , { -
“much”: { -
"power": { -
“!”: “Amaze” -
-
-
-
} -
-
Example 7 File upload
-
XML/HTML Code- Copy content to clipboard
- <form enctype='application/json'>
-
<input type='file' name='file' multiple>
-
form>
-
- // Suppose you upload 2 files, the generated Json data is:
- {
- "file": [
-
"type": "text/plain", -
"name": "dahut.txt", -
"body": "-
REFBQUFBQUFIVVVVVVVVVVVVCEhIQo="
}, -
- "type": "text/plain",
- "name": "litany.txt",
- "Body": " SSBTDXN0IG5VDCBMZWFYLLLXVHCIBPCIBPCIB0AGUGBWLUZC1RWXSZIUCG
- =="
] -
} -
-