0
respostas

loop de gravação com Ajax

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;">&nbsp;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>&nbsp;<%=rsDados("contrato_siga")%></label><br>
            </div>
            <%rsDados.movenext
        loop%>
    </div>

<%end if%>