2017-06-13 44 views
-1

我有以下幾點:爲什麼我的FORM在Ajax調用後被提交?

<form id="form" action="xxx" method="get"> 
    <input type="checkbox" name="cb"> 
    <button onclick="update();">Update</button> 
</form> 

<script> 
    function update() { 
    var data = $("#form").serialize(); 
    $.ajax({ 
     url: "/api/m/x", 
     type: "post", 
     data: data 
     } 
    ).done(function(results,status) { 
      alert(status); 
     }).fail(function(error, status) { 
      alert(status); 
     }); 
    } 
</script> 

當我點擊更新按鈕,Ajax調用是/api/m/x製成,一個警報被觸發。到現在爲止還挺好。但是,在我關閉警報對話框後,表單已提交!瀏覽器發送到xxx?cb=on,例如,如果我勾選複選框。

這是怎麼發生的?我的表單沒有<input type='submit'>元素。誰觸發提交表單?

我嘗試將return false;添加到update函數,但行爲仍然相同。

+0

你的成功在哪裏ss – unixmiah

+0

這是在'完成'的權利? –

+0

因爲你沒有做任何事情阻止它被提交 – j08691

回答

0

的形式<button>標籤是一個提交按鈕,除非你指定type=button
此外,返回虛假應在onsubmit事件

<form id="form" action="xxx" method="get" onsubmit="return update();"> 

function update() { 
... 
    return false; 
} 
1

如果你在表單按鈕,形式是,當你點擊這個按鈕

嘗試這樣的提交:

<form onsubmit="update();return false;"> 
相關問題