ajax加载指示器停在两者之间

时间:2016-12-02 10:40:29

标签: javascript jquery json ajax

我在保存按钮单击上保存数据,调用ajax并将json数据传递给控制器​​方法,但是当我们保存时,加载开始并突然停止,但数据未保存。

它无法正常工作我已经尝试过但无法正常工作请帮助我。

<button type="button" id="saveDeleg" class="btn_reg_back btnmainsize btnautowidth btngrad btnrds btnbdr btnsavesize " aria-hidden="true" data-icon="&#xe0f4;">@Resources.Resource.Save</button>
$('#saveDeleg').click(function() {
  var response = Validation();
  if (!response) {
    return false;
  }

  $("#overlay").show();
  $('.loading').show();

  if ($('#organName').val() == '') {
    $('#validorganisation').show();
    return false;
  } else {
    $('#validorganisation').hide();
  }
  //Contact name
  var SubDelegation = $('#subdelegation').is(':checked');
  var CopyNotification = $('#copynotification').is(':checked');
  var ArrangementId = $("#ArrangementId").val();
  var paramList = {
    ArrangementId: ArrangementId,
    ArrangementName: $('#arrangName').val(),
    OrganisationName: $('#organName').val(),
    OrganisationId: $('#OrganisationId').val(),
    ContactName: $('#contactName').val(),
    ContactId: $('#ContactId').val(),
    SubDelegation: $('#subdelegation').is(':checked'),
    CopyNotification: $('#copynotification').is(':checked'),
    ContactType: $('#ContactType').val(),
    SelectedTypeName: $("input[name$=SelectedType]:checked").val()
  };

  setTimeout(function() {
    $.ajax({
      async: false,
      type: "POST",
      url: '@Url.Action("SaveDelegation", "Structures")',
      dataType: "json",
      contentType: "application/json; charset=utf-8",
      data: JSON.stringify(paramList),
      processdata: true,
      success: function(result) {
        //stopAnimation()
        paramList = null;
        if (result == 0) {
          window.location.href = '../Structures/MyDelegationArrangement';
        } else if (result == 1) {
          window.location.href = '../Structures/CreateDelegation';
        } else if (result == 2) {
          window.location.href = '../Home/Error';
        } else if (result == 3) {
          window.location.href = '../Account/Login';
        } else {
          //validation message
          alert('Error');
        }
      },
      error: function() {},
      complete: function() {
        $("#overlay").hide();
        $('.loading').hide();
      }
    });
  }, 500);
});

1 个答案:

答案 0 :(得分:0)

加载指示器的问题是因为您使用了async: false来锁定UI。删除该设置。

另请注意,如果未保存数据,我会假设您的AJAX调用返回错误。如果是,请检查控制台以查看响应代码。在error回调函数中添加一些逻辑也可能值得为您提供有关发生的事情的信息,并告知您的用户下一步该做什么。