拦截形成POST字符串并通过AJAX发送

时间:2012-08-30 01:47:22

标签: javascript jquery html-form

是否可以截取表单的POST字符串并通过AJAX发送它?我可以使用$('form')。submit()拦截POST事件,但我看不到我可以从哪里获取POST字符串。我可以从表单的输入中重现字符串,但这看起来很可疑。

3 个答案:

答案 0 :(得分:21)

// 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()不包含提交按钮。如果您还需要提交按钮值,则必须手动添加。

答案 1 :(得分:3)

您当然可以这样做 - 您可以像往常一样阻止表单提交,并通过jQuery获取其数据并执行POST

$(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

        }

    )

});

答案 2 :(得分:0)

使用.serialize(),它会将一组表单元素编码为字符串以供提交。

$('form').serialize()