Можно ли перехватить строку POST формы и отправить ее через AJAX? Я мог бы использовать $('form'). Submit(), чтобы перехватить событие POST, но я не вижу, откуда я могу получить строку POST. Я мог бы воспроизвести строку из входов формы, но это кажется сомнительным.
Перехватить форму строки POST и отправить через AJAX вместо
Ответ 1
// capture submit
$('form').submit(function() {
$theForm = $(this);
// send xhr request
$.ajax({
type: $theForm.attr('method'),
url: $theForm.attr('action'),
data: $theForm.serialize(),
success: function(data) {
console.log('Yay! Form sent.');
}
});
// prevent submitting again
return false;
});
Обратите внимание, что в Филе в своем комментарии указано, что .serialize()
не включает кнопку отправки. Если вам также необходимо оценить отправку, вы должны добавить его вручную.
Ответ 2
Конечно, вы можете: вы не можете отправить свою форму как обычно, вы берете ее данные и выполняете POST
через jQuery:
$(form).submit(function(event){
// prevents default behaviour, i.e. reloading the page
event.preventDefault();
$.post(
$(this).attr('action'), // the form action
$(this).serializeArray(), // the form data serialized
function(data)
{
// what you are supposed to do with POST response from server
}
)
});
Ответ 3
используйте .serialize()
, он будет ncode набор элементов формы в виде строки для отправки.
$('form').serialize()