Перехватить форму строки POST и отправить через AJAX вместо

Можно ли перехватить строку POST формы и отправить ее через AJAX? Я мог бы использовать $('form'). Submit(), чтобы перехватить событие POST, но я не вижу, откуда я могу получить строку POST. Я мог бы воспроизвести строку из входов формы, но это кажется сомнительным.

Ответ 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()