0

我有一个链接可以打开一个对话框,询问日期。当他们单击提交时,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>
4

0 回答 0