【问题标题】:Seeking clarification to weird POST behavior (Django, Django server, AJAX, Chrome)寻求澄清奇怪的 POST 行为(Django、Django 服务器、AJAX、Chrome)
【发布时间】:2012-03-18 19:47:26
【问题描述】:

当我使用 AJAX 发布时,我看到了一个奇怪的行为。当我有以下代码时,

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

我得到的是error: [Errno 32] Broken pipe,而不是&lt;a&gt; 标签。另外,我被重定向到 相同的 URL (\business\signup) 但我的 POST 参数作为 GET 发送。 举例来说,如果我发布 a=1&amp;b=2,我将被重定向到 \business\signup?a=1&amp;b=2。 我的表单声明是

    <form class="holder form-horizontal" id="biz_details"  style= "background-color: white;overflow-y:hidden;">

此外,如果我的表单确实有一个动作属性,并且在 POST 函数的动作中有一个 js 调用,它就可以正常工作。 任何人都可以对这种行为有所了解,尤其是关于重定向的行为吗?

【问题讨论】:

    标签: ajax django google-chrome


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢布尔汉。感谢澄清。不幸的是,我没有足够的分数来投票给你。有机会我会做的。
    猜你喜欢
    • 1970-01-01
    • 2021-07-17
    • 2019-01-08
    • 2014-03-30
    • 1970-01-01
    • 2017-01-30
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多