我有一个链接可以打开一个对话框,询问日期。当他们单击提交时,javascript 获取表单数据,生成 ajax 调用并返回响应。这没问题。但是,如果我立即再次单击相同的链接并在表单中提交新日期,我会从我的第一个 ajax POST 中获得结果。
本质上,后续的 ajax 调用使用的是原始的 POST 数据,没有什么新东西。代码具有故障排除警报。我假设我设置了一些没有被重置的 var,但认为这个事件处理程序被“关闭”取消,然后立即重新添加,并且 var 将在该函数的范围内。
<script>
//Modal submit
$(document).off('click', '#SubmitAllChecks');
$(document).on('click', '#SubmitAllChecks', function(e) {
e.preventDefault();
var form = $('#AllChecks');
var url = form.attr('action');
var method = form.attr('method');
var data = form.serializeArray();
$.each(data, function(k,v) {
alert(v.name + ' : ' + v.value);
});
$.ajax({
url: url,
type: method,
data: data,
dataType: 'json',
beforeSend: function() {
//add load indicator
window.erpui.startload();
},
success: function(data) {
alert('xhr complete');
$.each(data, function() {
alert(this.value + ' data');
if (this.value == 'error' && this.msg != '') {
window.erpui.endload();
window.erpui.notify.error(this.msg);
window.erpui.notify.commit();
}
else if (this.value == 'success') {
window.erpui.endload();
window.erpui.notify.success(this.msg);
window.erpui.notify.commit();
$('.ui-dialog').remove();
//window.location.href="{% url all_checks %}";
//window.location.reload();
}
});
},
error: function() {
alert('error');
//remove load indicator
window.erpui.endload();
}
});
});
</script>