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;
});

请注意,正如菲尔在他的评论中所说,.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(),它会将一组表单元素编码为字符串以进行提交。

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