2016-12-02 5 views
1

私はajaxを呼び出してjsonデータをコントローラメソッドに渡すセーブボタンクリックでデータを保存しますが、保存するとデータが保存されずに読み込みが開始されて突然停止します。ajaxローディングインジケータが間に停止しました

私はそれを試してみましたが、これで私を助けてください。あなたはUIをロックアップasync: falseを使用しているため

<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); 
}); 
+2

ロードインジケータの問題は、UIをロックする 'async:false'を使用したためです。その設定を削除します。また、データが保存されていない場合は、AJAXがエラーを返すと思いますので、コンソールをチェックしてレスポンスコードを確認してください。 'error'コールバック関数にいくつかのロジックを入れて、起こったことに関する情報を得ることもできます。 –

+0

よろしくお願いします。 –

+0

@RoryMcCrossanあなたの答えを受け入れるには、あなたのコメントを回答として追加してください。 –

答えて

0

ロードインジケータ付きの問題があります。その設定を削除します。

また、データが保存されていない場合は、AJAX呼び出しでエラーが返されていると考えられます。その場合は、コンソールをチェックして応答コードを確認してください。 errorコールバック関数に何らかのロジックを入れて、何が起こったかについての情報を提供するだけでなく、ユーザーに次に何をするかを伝えることもできます。

関連する問題