Rumah >hujung hadapan web >tutorial js >Ajax lebih mudah dengan antara muka HTML5 FormData
<code class="language-html"><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></code>jQuery memudahkan siri data borang untuk Ajax:
<code class="language-javascript">$("#myform").on("submit", function(e) { e.preventDefault(); $.post(this.action, $(this).serialize()); });</code>Plain JavaScript memerlukan pengekstrakan data manual:
<code class="language-javascript">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); };</code>menyelaraskan proses ini dengan ketara:
FormData
<code class="language-javascript">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); };</code>secara automatik mengendalikan pengekodan. Ia menggunakan
, membolehkan muat naik fail. Anda juga boleh menambah data secara manual: FormData
multipart/form-data
<code class="language-javascript">var formData = new FormData(); formData.append("name", "value"); formData.append("a", 1); formData.append("b", 2);</code>menikmati sokongan penyemak imbas yang luas, tidak termasuk versi IE yang sangat lama. Untuk maklumat lanjut, rujuk rujukan
dan dokumentasi MDN. FormData
FormData
soalan yang sering ditanya mengenai antara muka HTML5 FormData dan Ajax
Apakah antara muka HTML5 FormData dan bagaimana ia berfungsi dengan Ajax?
FormData
bagaimana saya boleh membuat objek FormData?
untuk membuat satu dari elemen bentuk. new FormData()
new FormData(formElement)
bagaimana saya boleh menambah data ke objek FormData?
append(name, value)
bagaimana saya boleh menghantar objek FormData dengan permintaan Ajax?
secara automatik ditetapkan ke xhr.send(formData)
. Content-Type
multipart/form-data
Bolehkah saya menggunakan antara muka FormData dengan kaedah Ajax JQuery?
. processData: false
contentType: false
bagaimana saya boleh menyemak sama ada penyemak imbas menyokong antara muka FormData?
if ("FormData" in window) { ... }
Bolehkah saya menggunakan antara muka FormData untuk menghantar fail?
objek. File
Blob
Bolehkah saya memadam data dari objek FormData?
delete(name)
Bolehkah saya melelehkan data dalam objek FormData?
, entries()
, atau keys()
. values()
forEach()
bolehkah saya menggunakan antara muka formdata dengan mengambil?
. body
Atas ialah kandungan terperinci Ajax lebih mudah dengan antara muka HTML5 FormData. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!