拦截形成POST字符串并通过AJAX发送
是否可以截取表单的POST字符串并通过AJAX发送它? 我可以使用$(’form’)。submit()拦截POST事件,但是我看不到从哪里可以获得POST字符串。 我可以从表单的输入中重现字符串,但这看起来很可疑。
// 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()
不包括提交按钮。 如果您还需要提交按钮值,则必须手动添加。
您当然可以这样做 – 您可以像往常一样阻止表单提交,获取数据并通过jQuery执行POST
:
$(form).submit(function(event){ // prevents default behaviour, ie 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 } ) });
使用.serialize()
,它会将一组表单元素编码为字符串以进行提交。
$('form').serialize()