我刚刚开始使用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);
});
答案 0 :(得分:1)
如果您在return false
级别附加了document
,则无法取消该活动。当它传播到document
级别时,表单已经提交。您应该将事件专门附加到表单(正如您已注释掉的那样),并在load()
调用的成功事件上重新连接它。
答案 1 :(得分:1)
使用解决方法解决了这个问题。以前,我每次使用我的ajax请求重新生成提交按钮,我认为事件处理程序没有附加到重新生成的提交元素。我将提交移到了ajax请求的目标之外,并且每次都开始工作。