12

フォームの POST 文字列を傍受して、代わりに AJAX 経由で送信することは可能ですか? $('form').submit() を使用して POST イベントをインターセプトできますが、どこから POST 文字列を取得できるかわかりません。フォームの入力から文字列を再現できましたが、これは疑わしいようです。

4

3 に答える 3

24
// capture submit
$('form').submit(function() {
     var $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;
});

Philがコメントで述べたよう.serialize()に、送信ボタンが含まれていないことに注意してください。送信ボタンの値も必要な場合は、手動で追加する必要があります。

于 2012-08-30T01:49:54.117 に答える
3

もちろんできます - 通常どおりフォームが送信されないようにし、そのデータを取得しPOSTて jQuery 経由で実行します。

$(form).submit(function(event){

    // prevents default behaviour, i.e. reloading the page
    event.preventDefault();

    $.post(

        $(this).attr('action'), // the form's action
        $(this).serializeArray(),   // the form data serialized
        function(data)
        {

            // what you are supposed to do with POST response from server

        }

    )

});
于 2012-08-30T01:51:27.427 に答える
0

を使用する.serialize()と、一連のフォーム要素が送信用の文字列として ncode されます。

$('form').serialize() 
于 2012-08-30T01:49:59.967 に答える