2013-10-18 54 views
0

我有一個表單,用戶可能會提交多次。以下是我的submit活動中包含的代碼。jQuery ajax done()多次調用

當用戶第一次提交表單時,一切都很好,done回調被執行一次。在接下來的每個時間他們提交表格,done回調得到執行,但多次提交表格,data參數是來自最近提交的數據。

var $form = $(e.currentTarget); 
$.ajax({ 
    url: $form.attr('action'), 
    data: $form.serialize(), 
    type: 'POST' 
}.done(function(data) { 
    if (data.success === true) { 
     alert('success!'); 
    } else { 
     alert(data.errors); 
    } 
}); 

這是怎麼回事?我做錯了什麼,或者我該如何解決?我以前從未遇到過這個問題,但我不確定發生了什麼。

+0

可能得到一個http://jsfiddle.net/與此行動? –

+0

我們需要看到提交事件代碼 –

+1

我猜想你每次都通過表單重新添加一個新的事件處理程序,所以他們堆積如山,在3次提交之後,你有3個事件處理程序,每個處理程序都會被調用。您必須自己查看該代碼或將其包含在此處,以便我們可以進一步提供幫助。 – jfriend00

回答

0

好的,我的壞。我不知不覺地將submit事件綁定到表單上,每次我發現它時(通常都是隱藏的)。我沒有注意到整個請求被多次發送,而不僅僅是done回調。

1

因爲我在我的評論中發現了問題,所以我會將其轉化爲答案。

最有可能的情況是,您每次重新綁定表單提交事件處理程序,以便您的代碼爲綁定的每個事件處理程序調用一次。這不僅會每次調用.done(),而且還會多次調用ajax()函數。

解決這個問題的地方是綁定提交事件處理程序的地方。應該只綁定一次,而不是每次使用表單。