2015-06-13 98 views
0

這裏是我的代碼:爲什麼多次執行Ajax post請求?

$(document).ready(function(){ 
      $("#mainbutton").click(function(){ 
       $("#ajaxform").submit(function(e){ 
        var info = $(this).serialize(); 
        $.ajax(
        { 
         url : "userctrl", 
         type: "post", 
         data : info, 
         success:function(data, textStatus, jqXHR) 
         { 
          console.log("success"); 
          $('.valid-error').html(data); 
         }, 
        }); 
        e.preventDefault() 
       }); 
       $("#ajaxform").submit(); //Submit the form 
      }); 
     }); 

和我的HTML

 <form id="ajaxform"> 
     <input type="hidden" name="action" value="submit"/> 
     <input type="text" placeholder="Name" name="name" id="name" /><span></span> 
     <input type="text" placeholder="Surname" name="surname" /><span></span> 
     <input type="text" placeholder="Address" name="address" /><span></span> 
     <p class="valid-error"></p> 
     <input id="mainbutton" class="mainbutton" type="button" value="trial"/> 
     </form> 

執行這一要求多次取決於哪些字段被填滿。如果我填充兩個字段將被執行3次,如果我填充3個字段4次。這並非總是如此,但絕對是我的servlet中的doPost方法被多次調用......我只點擊一次提交按鈕!!!爲什麼?

+0

每次點擊你要綁定一個新的提交事件 –

+0

是的,但我點擊一次 – oronaparcali

+0

林不知道你是怎麼檢查它,但我想你做錯了,並提防表格可以提交使用輸入或空格在某些情況下,沒有單擊按鈕,您的提交處理程序不會被稱爲 –

回答

2

因爲每次都是單擊該按鈕,您將在窗體中添加更多的submit處理程序。任何時候當你發現自己在之內掛接了另一個事件處理函數中的事件處理函數時,你就要仔細考慮是否真的想要你想做的事(通常不是)。

掛鉤submmitclick處理程序:

$(document).ready(function() { 
    $("#ajaxform").submit(function(e) { 
     var info = $(this).serialize(); 
     $.ajax({ 
      url: "userctrl", 
      type: "post", 
      data: info, 
      success: function(data, textStatus, jqXHR) { 
       console.log("success"); 
       $('.valid-error').html(data); 
      }, 
     }); 
     e.preventDefault() 
    }); 
    $("#mainbutton").click(function() { 
     $("#ajaxform").submit(); //Submit the form 
    }); 
}); 
+0

thx這是解釋。只要問你這個函數$(document).ready(function() - 它不是多餘的? – oronaparcali

+0

@oronaparcali:它是如果你遵循標準的網頁優化建議,並把你的腳本標籤放在你的**結尾** HTML,在關閉''標記之前,是的,如果你不遵循這個建議,如果你的腳本超出了它在HTML中作用的元素,你可能需要使用'ready'。 –

+0

謝謝。我還有最後一個問題,如果我想在重定向或轉發請求到另一個頁面後成功ot ajax請求 - 我怎麼能做到這一點?對很多問題:) – oronaparcali