我有一个链接打开一个对话模式,询问日期。当他们点击提交时,javascript获取表单数据,生成ajax调用,并返回响应。这没问题。但是,如果我再次立即再次单击相同的链接并在表单中提交新的日期,我会从第一个ajax POST获得结果。
基本上,后续的ajax调用正在使用原始的POST数据,而不是什么新的。代码提供故障排除警报。我假设我设置了一些没有重置的var,但认为这个事件处理程序被取消了“off”,然后立即重新添加,并且vars将仅在该范围内。
<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>