Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Vilela Alves

[Resolvido] ajax no onsubmit com jquery

Recommended Posts

Bom dia.

 

estou passando por um problema.

no meu sistema, tenho uma pagina onde verifico algumas permissoes específicas qdo o form é enviado.

 

pois bem.

tenho


   $('#from_contrato').submit(function(){

       var retorno = false;

       retorno =  verifica_permissoes()

      //return false;
           $('#ul_mensagem').html('');

           var elementos = $('input[type=text], select');
           if($("#tipo_plano").val()=="3"){

               for (var i=0; i<elementos.length; i++){

                   if(jQuery.inArray(elementos[i].name, campos_obrigatorios_plano3)>-1){
                       var index = campos_obrigatorios_plano3.indexOf(elementos[i].name);
                       if(document.getElementById(elementos[i].id).value==""){
                           $('#mensagem_jquery').show();
                           $('#ul_mensagem').append("<li>O campo "+nome_campos_plano3[index]+" é obrigatório</li>");
                           retorno = false;
                       }
                   }
               }
           }
           else
           {
               for (var i=0; i<elementos.length; i++){

                   if(jQuery.inArray(elementos[i].name, campos_obrigatorios_planos1_2)>-1){
                       var index = campos_obrigatorios_planos1_2.indexOf(elementos[i].name);
                       if(document.getElementById(elementos[i].id).value==""){
                           $('#mensagem_jquery').show();
                           $('#ul_mensagem').append("<li>O campo "+nome_campos_plano1_2[index]+" é obrigatório</li>");
                           retorno = false;
                       }
                   }
               }
           }

       return retorno;
   });

 


function verifica_permissoes(){

   var grupo_usuario = $("#han_grupo_usuario").val();

   var retorno = true;

   $.ajax({
       type: "POST",
       data: {
           han_grupo : grupo_usuario,
           flg_cancelado : $("#flg_cancelado").val(),
           dat_ini_contrato : $("#dat_ini_contrato").val(),
           dat_fim_contrato : $("#dat_fim_contrato").val(),
           val_plano_scm : $("#val_plano_scm").val().replace(",","."),
           val_plano_sva : $("#val_plano_sva").val().replace(",","."),
           val_acrescimo : $("#val_acrescimo").val().replace(",","."),
           val_bonus_adicional_mb : $("#val_bonus_adicional_mb").val(),
           flg_mac_only_auth : $("#flg_mac_only_auth").val(),
           flg_use_mac_auth : $("#flg_use_mac_auth").val(),
           flg_processa_mensalidade : $("#flg_processa_mensalidade").val(),
           flg_exibir_boleto : $("#flg_exibir_boleto").val(),
           flg_vinc_estacao : $("#flg_vinc_estacao").val(),

           flg_cancelado_anterior : $("#flg_cancelado_anterior").val(),
           dat_ini_contrato_anterior : $("#dat_ini_contrato_anterior").val(),
           dat_fim_contrato_anterior : $("#dat_fim_contrato_anterior").val(),
           val_plano_scm_anterior : $("#val_plano_scm_anterior").val().replace(",","."),
           val_plano_sva_anterior : $("#val_plano_sva_anterior").val().replace(",","."),
           val_acrescimo_anterior : $("#val_acrescimo_anterior").val().replace(",","."),
           val_bonus_adicional_mb_anterior : $("#val_bonus_adicional_mb_anterior").val(),
           flg_mac_only_auth_anterior : $("#flg_mac_only_auth_anterior").val(),
           flg_use_mac_auth_anterior : $("#flg_use_mac_auth_anterior").val(),
           flg_processa_mensalidade_anterior : $("#flg_processa_mensalidade_anterior").val(),
           flg_exibir_boleto_anterior : $("#flg_exibir_boleto_anterior").val(),
           flg_vinc_estacao_anterior : $("#flg_vinc_estacao_anterior").val()
       },

       url: baseurl + 'index.php/cliente/verifica_permissoes',
       cache: true,
       success: function(result)
       {

           var mensagem =result.split("|");

           retorno=false;
           if(mensagem[0] == "true"){
               retorno = true;
           }else{

               retorno=false;

               var conta = 0;
               for(var i=1; i<mensagem.length; i++){

                   var teste = (conta==0)?"Você não tem permissão para:":"";
                   var style = (conta==0)?"":"style='margin-left:176px;'";
                   $('#mensagem_jquery').show();
                   $('#ul_mensagem').append("<li "+style+">"+teste+"-"+mensagem[i]+"</li>");
                   conta++;
               }
           }
       }
   });

   return retorno;
}


bom do jeito que está ai em cima, o ajax nao retorna nada.

mas se eu descomento aquele return false que esta comentado na funcao submit, ele funciona e retorna corretamente.

 

alguem sabe o que eu devo fazer, para que seja esperado o retorno do ajax para que o resto da funcao seja executada?

 

att.

Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou você usa o objeto deferred ou você usa o ajax em modo sincrono(sugiro usar sincrono).

 

 

 

http://wbruno.com.br/2012/01/23/exemplo-de-uso-jquery-deferred-simples/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá bruno. bom eu usei o async: false.

funcionou...

 

obrigado pela dica.

 

mas agora os LI que eu coloquei pra criar na mensagem nao está criando. saberia me dizer se tem alguma coisa relacionada?

 

Tópico resolvido...

 

obrigado Willian pela dica.

 

eu nao conhecia essa opcao async.

acho que farei mto uso dela.

 

quanto aos LI, eles estavam sendo retirado apos a chamada. eu entao coloquei a para limpar antes da chamada da funcao e tudo se resolveu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.