所以我有這個片段捕捉提交:獲取HTMLFormElement從jQuery的)對象提交(
$(function(){
$('#xhr2_form').submit(function(e){
e.preventDefault();
sendForm();
});
});
和這個片段應用XHR 2表單提交
var xhr = new XMLHttpRequest();
function sendForm() {
var myForm = $('#xhr2_form');
// get fields
var values = {};
$.each($('#xhr2_form').serializeArray(), function(i, field){
values[field.name] = $(this).val();
});
// append data
var formData = new FormData(myForm);
formData.append('type',values['type']);
xhr.open('POST', '/test/xhr2', true);
xhr.onload = function(e){};
xhr.send(formData);
}
問題是API對於FORMDATA接受一個HtmlFormElement如下記載:
http://dev.w3.org/2006/webapi/XMLHttpRequest-2/#the-formdata-interface
問題是我試圖從Jquery的提交事件中檢索HTMLFormElement,但我不知道如何。
沒有JS,這是它是如何做:
<form id="myform" name="myform" action="/server">
<input type="text" name="username" value="johndoe">
<input type="number" name="id" value="123456">
<input type="submit" onclick="return sendForm(this.form);">
</form>
function sendForm(form) {
var formData = new FormData(form);
formData.append('secret_token', '1234567890'); // Append extra data before send.
var xhr = new XMLHttpRequest();
xhr.open('POST', form.action, true);
xhr.onload = function(e) { ... };
xhr.send(formData);
return false; // Prevent page from submitting.
}
所以我怎麼jQuery中的HTMLFormElement?
只是一個提示訪問事件的原始元素,jQuery的已經內置支持從一種形式,像這樣得到的表單數據:'$(「#id_of_form」)序列化() '< - 查詢字符串格式的文本。這使得它可以減少很多代碼。 – Alxandr