Итак, у меня есть этот фрагмент, который фиксирует отправку:
$(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
проблема в том, что я пытаюсь извлечь этот HTMLFormElement из события submit Jquery, но я не знаю как.
без 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.
}
так как мне получить HTMLFormElement в Jquery?