寻求澄清奇怪的POST行为(Django,Django服务器,AJAX,Chrome)

时间:2012-02-29 10:13:09

标签: ajax django google-chrome

当我使用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调用,那么它可以正常工作。 任何人都可以对这种行为有所了解,特别是有关重定向的行为吗?

1 个答案:

答案 0 :(得分:0)

为了使该功能与提交按钮一起正常工作,您必须禁用表单的默认操作,并且由于您尚未定义METHOD,因此默认(GET)使用。

要禁用默认操作,只需在表单提交时触发的函数末尾添加return false

$('#myform').submit(function() {
   // do something
   return false;
});