"FormData" yra išsamus įvadas ir naudojimas https://developer.mozilla.org/zh ... ng_FormData_Objects
"FormData" metodai ir įvykiai ten jau yra labai aiškūs, todėl čia negaišiu jiems laiko. Šiame straipsnyje daugiausia paaiškinamas "FormData" objektų ir asinchroninių failų nusiuntimų naudojimas.
Objektas "FormData" leidžia mums organizuoti rakto ir reikšmės porų rinkinį, siunčiamą naudojant objektą XMLHttpRequest. Jis pirmiausia naudojamas formos duomenims siųsti, tačiau gali būti naudojamas nepriklausomai nuo duomenų, perduodamų naudojant formas.
1. Sukurkite "FormData" objektą nuo nulio
Galite sukurti savo FormData objektą ir pridėti rakto ir reikšmės poras prie objekto naudodami addend() metodą, pvz.:
Pastaba: abiejuose laukuose "userfile" ir "webmasterfile" yra failų. Laukui "accountnum" priskirtas numeris tiesiogiai konvertuojamas į eilutę FormData.append() metodu (lauko reikšmė gali būti BLOB, failas arba eilutė: jei reikšmė nėra nei BLOB, nei failas, reikšmė konvertuojama į eilutę). Šiame pavyzdyje sukuriamas FormData egzempliorius su laukais "username", "accountnum", "userfile" ir "webmasterfile", o tada formos duomenims siųsti naudojamas XMLHttpRequest objekto send() metodas. Laukas "webmasterfile" yra blob. BLOB objektas reiškia neapdorotus failo objekto duomenis. Tačiau duomenys, kuriuos pateikia BLOB, nebūtinai turi būti "JavaScript" gimtojo formato. Failų sąsaja pagrįsta blobais, paveldinčiais blob funkcionalumą ir išplečiant vartotojų failų sistemų palaikymą. Norėdami sukurti blob, galima iškviesti Blob() konstruktorių.
2. Gaukite "FormData" objektą iš HTML formos
Norėdami gauti FormData objektą su esamais formos duomenimis, kurdami FormData objektą turite nurodyti formos elementą.
Va taip:
Taip pat galite įtraukti papildomų duomenų gavę objektą FormData, pvz.:
Tai leidžia prieš siunčiant pridėti papildomos informacijos, nebūtinai vartotojo redaguotos.
3. Naudokite FormData objektą failui siųsti
Galite naudoti FormData failams siųsti. Paprastame <form>viduryje gali <input>būti elementas:
Tada galite jį išsiųsti naudodami šį kodą:
Taip pat galite įtraukti failą arba BLOB tiesiai į FormData objektą, pvz.:
Naudojant addend() metodą, failo pavadinimui siųsti gali būti naudojamas trečias parametras (siunčiamas į serverį per Content-Disposition antraštę). Jei trečiasis parametras nenurodytas arba šis parametras nepalaikomas, trečiasis parametras pagal numatytuosius nustatymus yra "blob".
Jei nustatėte teisingas parinktis, taip pat galite ją naudoti su "jQuery":
|