Estou desenvolvendo um código para gravar registros em que consta de uma array com vários contratos e outros valores que são constantes. Para isso estou usando um ajax dentro de um forEach que pega cada posição do array juntamente com os valores constantes e salva numa tabela. Porém o que está ocorrendo é que em caso de sucesso ou insucesso ele devolve uma informação numa janela que se ocorreu tudo ok ou não. E como está dentro do loop do Ajax a exibição da janela de informção do caso de sucesso ou insucesso no browser ficam-se acumulando janelinhas de informação para o usuário de cada gravação na tabela. Como neste caso a execução é assíncrona queria saber como contornar o problema para exibir uma única vez a janela de sucesso ou insucesso para o usuário. Desde já agradeço e se possível puder responder o mais breve ajudaria muito.
Segue a parte do código:
$(function() {
// ativa a ordenação da tabela
//$('table').tablesorter();
//habilita a exibição do tooltip
$('[data-toggle="tooltip"]').tooltip({html:true});
//máscaras os campos data e responsável
$('.data').mask('00/00/0000');
$('.matr').mask('c000000');
$('.contrato').mask('000000000000000000');
$('.cpf_cnpj').mask('00000000000000');
$('.float').maskMoney({thousands:'.',decimal:',',allowZero:true,allowEmpty:true,allowNegative:true});
$('.int').mask('000000');
//salva alteração do contrato
$('#btn-save').click(function() {
var id = $('#frm-id').val();
//valida dados
var stat = $('#frm-status').val();
var data = $('#frm-data').val();
var mei = $('#frm-meio').val();
var soli = $('#frm-solicitacao').val();
var matr = $('#frm-responsavel').val();
var obsv = $('#frm-obs').val();
var erro = false;
if (data != '' && !isDate(data)) {$('#frm-data').addClass('border-danger'); erro = true;}
// if (matr.length > 0 && matr.length < 7) {$('#frm-responsavel').addClass('border-danger'); erro = true;} if (erro) {return;}
var contratos_salvar=[id];
$('.lista').each(function(e){
if($(this).prop('checked') && $(this).data('ctr')!='on'){
contratos_salvar.push($(this).data('ctr'))
}
});
contratos_salvar.forEach(function(ctr){
$('#frm-id').val(ctr);
//procede gravação
$.ajax({
url: '<%=vFileName%>_save.asp',
type: 'post',
data: $('#frm-save').serialize(),
success: function(resp) {
if (resp === 'OK') {
//salva a interação no SIGA
//if (stat != '') {window.open(urlSIGA(ctr));}
//fecha o formulário
$('#modal-frm').modal('hide');
customAlert('','Gravação Realizada com Sucesso!','fas fa-check','green');
} else {
customAlert('Acesso Negado','Usuário não autorizado.','fas fa-exclamation-triangle','red');
}
},
error: function() {
customAlert('Erro Desconhecido','Contate o planejamento da CIGAD\BH.','fas fa-exclamation-triangle','red');
}
})
});
});
});
o HTML (ASP):
if not rsDados.EOF then%>
<div style="margin-bottom:-5px;">
<h6>Marque outro(s) contrato(s) deste cliente que queira gravar os mesmos dados:</h6>
</div><br>
<div>
<input type="checkbox" id="todos" name="todos"><label style="font-weight:bold;"> Todos</label><br>
<%do while not rsDados.EOF%>
<div style="line-height:1.7;">
<input type='checkbox' class='lista' data-ctr=<%=rsDados("contrato_siga")%>><label> <%=rsDados("contrato_siga")%></label><br>
</div>
<%rsDados.movenext
loop%>
</div>
<%end if%>