Ajax请求每隔一段时间才会工作

时间:2011-12-05 02:16:18

标签: javascript jquery

我刚刚开始使用ajax ...尝试通过post请求提交带有ajax的表单。出于某种原因,我写的代码恰好每隔一段时间都有效。当我第一次提交表单时,它是通过ajax处理的。当我再次提交时,不调用javascript,并且使用正常的帖子请求提交表单。当我第三次提交时,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);
});

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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