2011-12-05 45 views
0

我剛開始使用ajax ...嘗試通過發佈請求提交帶有ajax的表單。出於某種原因,我寫的代碼正好每隔一段時間都有效。當我第一次提交表單時,它通過ajax進行處理。當我再次提交時,javascript未被調用,並且表單提交了正常的發佈請求。當我第三次提交時,ajax再次運行。等等。任何想法如何解決這個問題讓Ajax每次都能工作?Ajax請求只能在其他時間工作

function contact_submit() { 

alert('starting'); 

var data = { 
    name: $('#id_name').val(), 
    email: $('#id_email').val(), 
    title: $('#id_title').val(), 
    message: $('#id_message').val(), 
    csrfmiddlewaretoken: $('input[name="csrfmiddlewaretoken"]').val() 
}; 

$('#contact_form').load("/contact/?ajax", data, function(response, status, xhr) { 
    if (status == "error") { 
     var msg = "Sorry but there was an error: "; 
     $("#contact_form").html(msg + xhr.status + " " + xhr.statusText); 
     } 
}); 

alert('load was performed'); 

return false; 
} 

$(document).ready(function() { 
//*$(document).submit(contact_submit); 
$(document).on("submit","form",contact_submit); 
}); 
+0

使用解決方法解決了它。之前,我每次都使用ajax請求重新生成提交按鈕,並且我認爲事件處理程序未附加到重新生成的提交元素。我將提交移到了ajax請求的目標之外,並且每次都開始工作。 – vasek1

+0

您應該在此主題中包含您自己的答案,並將其標記爲正確的答案。對未來的讀者有用 – rkw

+0

是的,我必須等待8小時,因爲我的代表低。我會的時候會做。 – vasek1

回答

1

使用解決方法解決了它。之前,我每次都使用ajax請求重新生成提交按鈕,並且我認爲事件處理程序未附加到重新生成的提交元素。我將提交移到了ajax請求的目標之外,並且每次都開始工作。

1

,如果你連接它的document級別您不能取消使用return false事件。當它傳播到document級別時,表單已經提交。您應該將該活動專門附加到表單上(如您已註釋過的那樣),並在load()電話的成功事件中再次重新附加該表單。

+0

我試過了,仍然得到了相同的交替行爲(雖然我從我的代碼示例中刪除了它) – vasek1

+0

@ vasek1它可能意味着第二次附加事件由於代碼中的異常而失敗。 –