当我使用AJAX进行POST时,我看到了一种奇怪的行为。当我有以下代码时,
<a id="submit" class= "btn btn-large btn-primary">Sign Up</a> (form submit)
$('#submit').on('click', function(){
console.log($('#biz_details').serialize());
$('#status').css('display','block');
$.post('/business/signup',$('#biz_details').serialize(), function(data){
$('#updated').text('Success.').append('<a href="/business/profile"> here to view profile </a>');
}
,'json');
});
事情似乎很好。但是,当我使用时
<submit id="submit" class= "btn btn-large btn-primary">Sign Up</submit> (form submit)
而不是<a>
标记,我得到error: [Errno 32] Broken pipe
。此外,我被重定向到
相同的URL(\business\signup
),但我的POST参数作为GET发送。
为了说明,如果我正在发帖a=1&b=2
,我将被重定向到\business\signup?a=1&b=2
。
我的表格声明是
<form class="holder form-horizontal" id="biz_details" style= "background-color: white;overflow-y:hidden;">
此外,如果我的表单确实有一个action属性,并且在POST函数的操作中有一个js调用,那么它可以正常工作。 任何人都可以对这种行为有所了解,特别是有关重定向的行为吗?
答案 0 :(得分:0)
为了使该功能与提交按钮一起正常工作,您必须禁用表单的默认操作,并且由于您尚未定义METHOD
,因此默认(GET
)使用。
要禁用默认操作,只需在表单提交时触发的函数末尾添加return false
。
$('#myform').submit(function() {
// do something
return false;
});