<form id="myform" action="webservice.php" method="post"> <input type="email" name="email" /> <select name="job"> <option value="">Select Role</option> <option>web developer</option> <option>IT professional</option> <option>other</option> </select> <input type="checkbox" name="freelancer" /> are you a freelancer? <input type="radio" name="experience" value="4" /> less than 5 year's experience <input type="radio" name="experience" value="5" /> 5 or more year's experience <textarea name="comments" rows="3" cols="60"></textarea> <input type="submit" value="Submit"> </form>
$("#myform").on("submit", function(e) { e.preventDefault(); $.post(this.action, $(this).serialize()); });
ただし、HTML5
document.getElementById("myform").onsubmit = function(e) { e.preventDefault(); var f = e.target, formData = '', xhr = new XMLHttpRequest(); for (var i = 0, d, v; i < f.elements.length; i++) { d = f.elements[i]; if (d.name && d.value) { v = (d.type == "checkbox" || d.type == "radio" ? (d.checked ? d.value : '') : d.value); if (v) formData += d.name + "=" + escape(v) + "&"; } } xhr.open("POST", f.action); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); xhr.send(formData); };
FormData
この簡潔なコードは、jQueryに相当するものよりも高速で読みやすいです。
document.getElementById("myform").onsubmit = function(e) { e.preventDefault(); var f = e.target, formData = new FormData(f), xhr = new XMLHttpRequest(); xhr.open("POST", f.action); xhr.send(formData); };
FormData
multipart/form-data
ファイルまたはブロブは、オプションのファイル名で追加できます。
var formData = new FormData(); formData.append("name", "value"); formData.append("a", 1); formData.append("b", 2);
に関するよくある質問
FormData
html5 formdataインターフェイスは何ですか?ajaxでどのように機能しますか?
FormData
html5
formdataオブジェクトを作成するにはどうすればよいですか?
formdataオブジェクトにデータを追加するにはどうすればよいですか?FormData
new FormData()
new FormData(formElement)
を使用します。
jqueryのajaxメソッドでformdataインターフェイスを使用できますか?append(name, value)
を設定します
xhr.send(formData)
ブラウザがFormDataインターフェイスをサポートしているかどうかを確認するにはどうすればよいですか?
Content-Type
multipart/form-data
。
またはprocessData: false
オブジェクトを追加します。contentType: false
メソッドを使用します。if ("FormData" in window) { ... }
、File
、Blob
、または
でformdataインターフェイスを使用できますか?
delete(name)
はい、
以上がHTML5 FormDataインターフェイスを使用したより簡単なAJAXの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。