Heim  >  Artikel  >  Web-Frontend  >  Eingehende Analyse des JSON-Kodierungsformats zur Übermittlung des Formulars data_json

Eingehende Analyse des JSON-Kodierungsformats zur Übermittlung des Formulars data_json

WBOY
WBOYOriginal
2016-05-16 15:52:551110Durchsuche

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=="
  }
 ]
}

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn