2012-02-29 19 views
0

當我使用AJAX進行POST時,我看到一個奇怪的行爲。當我有以下代碼時,尋求解釋奇怪的POST行爲(Django,Django服務器,AJAX,Chrome)

<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屬性,以我的形式,並且必須在動作自檢功能的JS調用,它工作正常。 任何人都可以對此行爲有所瞭解,尤其是關於重定向的行爲?

回答

0

爲了使該功能能夠正確使用提交按鈕,必須禁用表單的默認操作,並且由於您尚未定義METHOD,所以使用默認設置(GET)。

要禁用默認操作,只需在表單提交中觸發的函數末尾添加return false即可。

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

謝謝Burhan。感謝澄清。不幸的是,我沒有足夠的積分投票給你。當我有機會時會做。 – 2012-03-01 06:23:15

+0

如果答案適合您,您應該接受它。 – 2012-03-01 07:01:19