FormData
ãªãã¸ã§ã¯ãã¯ããã§ããã¾ã㯠XMLHttpRequest API ã使ç¨ãã¦éä¿¡ããããã®ãã¼ã¨å¤ã®ãã¢ã®éåãã³ã³ãã¤ã«ã§ãã¾ããæ¬æ¥ã¯ãã©ã¼ã ãã¼ã¿ã®éä¿¡ã«ä½¿ç¨ãããã¨ãæ³å®ãã¦ãã¾ãããããã¼ã®ã¤ãããã¼ã¿ãä¼éããããã«ãã©ã¼ã ã¨ã¯ç¬ç«ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ããä¼éããããã¼ã¿ã¯ããã©ã¼ã ã®ã¨ã³ã³ã¼ãã¿ã¤ãã multipart/form-data
ã«è¨å®ããã¦ããå ´åã«ãsubmit()
ã¡ã½ããã§éä¿¡ããéã«ä½¿ç¨ãããã¼ã¿ã¨åãå½¢å¼ã§ãã
FormData
ãªãã¸ã§ã¯ãã使ãã
以ä¸ã®ããã« FormData
ãªãã¸ã§ã¯ãã¯ããªãèªèº«ã§ä½æã§ããã¤ã³ã¹ã¿ã³ã¹åããã append()
ã¡ã½ãããå¼ã³åºããã¨ã§ãã£ã¼ã«ãã«ä»å ãã¾ãã
const send = document.querySelector("#send");
send.addEventListener("click", async () => {
const formData = new FormData();
formData.append("username", "Groucho");
formData.append("accountnum", 123456);
// file åã® <input> è¦ç´
const avatar = document.querySelector("#avatar");
formData.append("avatar", avatar.files[0]);
// JavaScript ã®ãã¡ã¤ã«é¢¨ãªãã¸ã§ã¯ã
const content = '<q id="a"><span id="b">hey!</span></q>';
const blob = new Blob([content], { type: "text/xml" });
formData.append("webmasterfile", blob);
const response = await fetch("http://example.org/post", {
method: "POST",
body: formData,
});
console.log(await response.json());
});
ã¡ã¢: "avatar"
ããã³ "webmasterfile"
ãã£ã¼ã«ãã¯ã©ã¡ããããã¡ã¤ã«ãå«ãã§ãã¾ãããã£ã¼ã«ã "accountnum"
ã«ä¸ããæ°å¤ã¯ FormData.append()
ã¡ã½ããã«ããç´ã¡ã«æååã¸å¤æããã¾ãï¼ãã£ã¼ã«ãã®å¤ã¨ã㦠Blob
ã File
ãæååã®ãããããåããã¨ãã§ãã¾ããå¤ã Blob
ã§ã File
ã§ããªãå ´åã¯ãæååã«å¤æããã¾ãï¼ã
ãã®ä¾ã§ã¯ã "username"
, "accountnum"
, "avatar"
, "webmasterfile"
ã¨ãããã£ã¼ã«ãã®å¤ãå«ã FormData
ã¤ã³ã¹ã¿ã³ã¹ãæ§ç¯ãã fetch()
ã使ç¨ãã¦ãã©ã¼ã ã®ãã¼ã¿ãéä¿¡ãã¾ãã "webmasterfile"
ãã£ã¼ã«ã㯠Blob
ã§ãã Blob
ãªãã¸ã§ã¯ãã¯ãä¸å¤çãªçãã¼ã¿ã®ãã¡ã¤ã«ã®ãããªãªãã¸ã§ã¯ãã表ãã¾ãã Blob ã¯ãå¿
ããã JavaScript ã«é©ããå½¢å¼ã§ã¯ãªããã¼ã¿ã表ãã¾ãã File
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¯ Blob
ããã¼ã¹ã«ãã¦ããã Blob ã®æ©è½ãç¶æ¿ããã¦ã¼ã¶ã¼ã®ã·ã¹ãã ä¸ã®ãã¡ã¤ã«ããµãã¼ãããããã«æ¡å¼µããã¦ãã¾ãã Blob
ã使ããã«ã¯ã Blob()
ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºãã¾ãã
FormData
ãªãã¸ã§ã¯ããåãåºã
æ¢åã® <form>
ã®ãã¼ã¿ãå«ã FormData
ãªãã¸ã§ã¯ããæ§ç¯ããã«ã¯ã FormData
ãªãã¸ã§ã¯ãã®ä½ææã«ãã® form è¦ç´ ãæå®ãã¾ãã
ã¡ã¢: FormData
㯠name
屿§ã使ç¨ããå
¥åãã£ã¼ã«ãã®ã¿ã使ç¨ãã¾ãã
const formData = new FormData(someFormElement);
ä¾:
const send = document.querySelector("#send");
send.addEventListener("click", async () => {
// <form> è¦ç´
const userInfo = document.querySelector("#user-info");
const formData = new FormData(userInfo);
const response = await fetch("http://example.org/post", {
method: "POST",
body: formData,
});
console.log(await response.json());
});
以ä¸ã®ããã«ãFormData
ãªãã¸ã§ã¯ãããã©ã¼ã ããåå¾ãã¦ããéä¿¡ããã¾ã§ã®éã«ã追å ã®ãã¼ã¿ãä»å ãããã¨ãã§ãã¾ãã
const send = document.querySelector("#send");
send.addEventListener("click", async () => {
const userInfo = document.querySelector("#user-info");
const formData = new FormData(userInfo);
formData.append("serialnumber", 12345);
const response = await fetch("http://example.org/post", {
method: "POST",
body: formData,
});
console.log(await response.json());
});
ããã«ãããå¿ ãããã¦ã¼ã¶ã¼ãç·¨éå¯è½ã§ããå¿ è¦ããªãè¿½å æ å ±ãå«ããããã«ãéä¿¡åã«ãã©ã¼ã ãã¼ã¿ãæ¡å¼µãããã¨ãã§ãã¾ãã
FormData ãªãã¸ã§ã¯ãã使ç¨ãããã¡ã¤ã«ã®éä¿¡FormData
ã使ç¨ãã¦ãã¡ã¤ã«ãéä¿¡ãããã¨ãã§ãã¾ããtype ã "file" ã§ãã <input>
è¦ç´ ãã<form>
ã«å«ãã¾ãã
<form enctype="multipart/form-data" method="post" name="fileinfo" id="fileinfo">
<p>
<label
>Your email address:
<input
type="email"
autocomplete="on"
name="userid"
placeholder="email"
required
size="32"
maxlength="64" />
</label>
</p>
<p>
<label
>Custom file label:
<input type="text" name="filelabel" size="12" maxlength="32" />
</label>
</p>
<p>
<label
>File to stash:
<input type="file" name="file" required />
</label>
</p>
<p>
<input type="submit" value="Stash the file!" />
</p>
</form>
ããã¦ã以ä¸ã®ãããªã³ã¼ãã使ç¨ãã¦éä¿¡ã§ãã¾ãã
const form = document.querySelector("#fileinfo");
form.addEventListener("submit", async (event) => {
const formData = new FormData(form);
formData.append("CustomField", "This is some extra data");
const response = await fetch("stash.php", {
method: "POST",
body: formData,
});
event.preventDefault();
});
ã¡ã¢: ãã©ã¼ã ã¸ã®åç
§ã渡ããå ´åã¯ã open()
ã®å¼ã³åºãã§æå®ãããªã¯ã¨ã¹ãã¡ã½ããããããã©ã¼ã ã§æå®ããã¡ã½ãããåªå
ãã¾ãã
è¦å: FormData ã使ç¨ãã¦ãXMLHttpRequest
ã¾ãã¯ãã§ãã API ã使ç¨ãã¦ã multipart/form-data
ã® Content-Type ã§ POST ãªã¯ã¨ã¹ããéä¿¡ããå ´åï¼ãã¡ã¤ã«ã Blob ããµã¼ãã¼ã«ã¢ãããã¼ãããå ´åãªã©ï¼ããªã¯ã¨ã¹ãã® Content-Type
ãããã¼ãæç¤ºçã«è¨å®ããªãã§ãã ãããããããã¨ããã©ã¦ã¶ã¼ããªã¯ã¨ã¹ãæ¬æã®ãã©ã¼ã ãã£ã¼ã«ãã®åºåãã«ä½¿ç¨ããå¢çã®è¡¨ç¾ã§ Content-Type ãããã¼ãè¨å®ãããã¨ãã§ããªããªãã¾ãã
以ä¸ã®ããã«ãç´æ¥ File
ã Blob
ã FormData
ãªãã¸ã§ã¯ãã¸è¿½å ãããã¨ãã§ãã¾ãã
data.append("myfile", myBlob, "filename.txt");
append()
ã¡ã½ããã使ç¨ããéã¯ããªãã·ã§ã³ã®ç¬¬ 3 弿°ã使ç¨ãã¦ãContent-Disposition
ãããã¼ã«å«ãããã¡ã¤ã«åãæ¸¡ããã¨ãã§ãã¾ããããã¯ãµã¼ãã¼ã¸éä¿¡ããã¾ãããã¡ã¤ã«åãæå®ããªãï¼ãããã¯å¼æ°ããµãã¼ããããªãï¼å ´åã¯ã "blob" ã¨ããååã使ç¨ããã¾ãã
FormData
ãªãã¸ã§ã¯ããããæ°ãããã©ãããã©ã¼ã ã«è¿½å ãããã®ã formdata
ã¤ãã³ãã§ããããã¯ããã©ã¼ã ã®ãã¼ã¿ã表ãã¨ã³ããªã¼ã®ãªã¹ãã使ãããå¾ã« HTMLFormElement
ãªãã¸ã§ã¯ãã§çºè¡ããã¾ãããã®ã¤ãã³ãã¯ããã©ã¼ã ãéä¿¡ãããã¨ãã«çºè¡ããã¾ããã FormData()
ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºãããã¨ãã«ãçºè¡ããã¾ãã
ããã«ããã FormData
ãªãã¸ã§ã¯ãã formdata
ã¤ãã³ãã®çºè¡ãåãã¦ãã°ããåå¾ãããã¨ãã§ããããã«ãªããèªåã§ã¾ã¨ããå¿
è¦ããªããªãã¾ãã
ä¾ãã°ã JavaScript ã§ã¯æ¬¡ã®ããã«ãã©ã¼ã ãåç §ã§ãã¾ãã
const formElem = document.querySelector("form");
submit
ã¤ãã³ãã®ãã³ãã©ã¼ã§ã¯ã preventDefault
ã使ç¨ãã¦æ¢å®ã®ãã©ã¼ã éä¿¡ã忢ãã¦ããã FormData
ã³ã³ã¹ãã©ã¯ã¿ã¼ãå¼ã³åºã㦠formdata
ã¤ãã³ããçºè¡ããã¾ãã
formElem.addEventListener("submit", (e) => {
// ãã©ã¼ã éä¿¡æã«æ¢å®ã®åä½ãææ¢
e.preventDefault();
// FormData ãªãã¸ã§ã¯ãã使ãã formdata ã¤ãã³ããçºè¡
new FormData(formElem);
});
formdata
ã¤ãã³ããçºè¡ãããã¨ã FormData
ãªãã¸ã§ã¯ãã« FormDataEvent.formData
ã使ã£ã¦ã¢ã¯ã»ã¹ããå¿
è¦ãªå¦çãè¡ããã¨ãã§ãã¾ãï¼ä»¥ä¸ã§ã¯ã XMLHttpRequest
ã使ã£ã¦ãµã¼ãã¼ã«éä¿¡ãã¦ãã¾ãï¼ã
formElem.addEventListener("formdata", (e) => {
console.log("formdata fired");
// ã¤ãã³ããªãã¸ã§ã¯ãããå½¢å¼ãã¼ã¿ãåå¾ãã¾ãã
const data = e.formData;
for (const value of data.values()) {
console.log(value);
}
// fetch() ã§ãã¼ã¿ãéä¿¡
fetch("/formHandler", {
method: "POST",
body: data,
});
});
åããã¾ããã
FormData
ãªãã¸ã§ã¯ãã¯ãç¡å¹ã«ãªã£ã¦ãããã£ã¼ã«ããç¡å¹ã«ãªã£ã¦ãããã£ã¼ã«ãã»ããã®ãã¼ã¿ãå«ãããã¨ã¯ã§ãã¾ããã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4