Ajax请求只在每隔一次工作

Ajax request working only every other time

本文关键字:一次 工作 请求 Ajax      更新时间:2023-09-26

我刚开始使用ajax…试图通过post请求用ajax提交表单。出于某种原因,我编写的代码每次都能正常工作。当我第一次提交表单时,它通过ajax进行处理。当我再次提交时,javascript不会被调用,表单会以正常的post请求提交。当我第三次提交时,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);
});

如果您将事件附加到document级别,则无法使用return false取消事件。当它传播到document级别时,表单已经提交了。您应该专门将事件附加到表单上(正如您已经注释的那样),并在load()调用的成功事件上再次重新附加它。

使用变通方法解决了它。以前,我每次都用ajax请求重新生成提交按钮,而且我认为事件处理程序没有附加到重新生成的提交元素。我将提交移到ajax请求的目标之外,并且每次都开始工作。