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