Heim > Artikel > Web-Frontend > Eingehende Analyse des JSON-Kodierungsformats zur Übermittlung des Formulars data_json
Die Übermittlung von Formulardaten im JSON-Codierungsformat ist ein weiterer wichtiger Beitrag von HTML5 zur Entwicklung und Weiterentwicklung des WEB. In der Vergangenheit wurden unsere HTML-Formulardaten serverseitig über die Schlüsselwertmethode übertragen Es mangelte an Verwaltung der Datenorganisation. Das Formular ist sehr primitiv. Die neu entstandene Methode zur Übermittlung von Formulardaten im JSON-Format konvertiert alle Daten im Formular in ein JSON-Format mit bestimmten Spezifikationen und übermittelt sie dann an den Server. Bei den vom Server empfangenen Daten handelt es sich um qualifizierten JSON-Code, der direkt verwendet werden kann.
So deklarieren Sie die Formularübermittlung im JSON-Format
Jeder sollte damit vertraut sein, wie man ein Formular zum Hochladen einer Datei verwendet. Dazu muss die Anweisung enctype="multipart/form-data" zum Formular-Tag in HTML hinzugefügt werden, die den Browser anweist, die Formulardaten im zu senden Datei-Upload-Modus. Die Deklaration des JSON-Format-Übermittlungsformulars ist wie folgt geschrieben: enctype='application/json'.
Kompatibilität mit älteren Browsern
Das Senden von Formularen im JSON-Format ist eine sehr neue Spezifikation in HTML5. Nur moderne Browser, die diese Spezifikationen implementieren, können die Semantik von enctype='application/json' erkennen und Formulardaten korrekt in das JSON-Format verpacken. Einige alte Browser sowie Browser, die diese Standards noch nicht implementiert haben, können nicht erkennen, was enctype='application/json' darstellt, sodass der Enctype des Formulars automatisch auf die Standardcodierung application/x-www-form-urlencoded herabgestuft wird . Formatieren. Serverseitiger Code kann basierend auf dem Wert von enctype bestimmen, wie Daten empfangen werden.
Formatbeispiel für ein Übermittlungsformular im JSON-Codierungsformat
Beispiel 1 Grundlegende Verwendung
<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 }
Beispiel 2 Wenn das Formular mehrere Formularfelder mit demselben Namen enthält, kodieren Sie diese als JSON-Arrays
<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] }
Beispiel 3 Eine komplexe Struktur, in der Formularfeldnamen als Arrays erscheinen
<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"] }
Beispiel 4 Im obigen Beispiel wird der fehlende Array-Nummernwert durch Null
ersetzt<form enctype='application/json'> <input name='hearbeat[0]' value='thunk'> <input name='hearbeat[2]' value='thunk'> </form> // 生成的Json数据是 { "hearbeat": ["thunk", null, "thunk"] }
Beispiel 5 Verschachtelungsformat für mehrere Arrays, unbegrenzte Anzahl von Verschachtelungsebenen
<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" } ] }
Beispiel 6 Tatsächlich gibt es keine Beschränkung der Array-Dimension!
<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" } } } ] } } }
Beispiel 7 Datei-Upload
<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==" } ] }