Ir para conteúdo

POWERED BY:

Arquivado

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

-rafael-

[Resolvido] problemas com função jquery ajax

Recommended Posts

ola a todos

 

estou com um problema em uma função que verifica se já existe um rg cadastrado no banco

 

 

   $.ck_rgv_exist = function () {

       var rg_visit     = $('#rg_visit').val();
       var old_rg_visit = $('#old_rg_visit').val();
       rg_visit         = rg_visit.replace(/[.-]/g,'');
       old_rg_visit     = old_rg_visit.replace(/[.-]/g,'');

       var retorno = false;

       if ( ( rg_visit != old_rg_visit ) && ( rg_visit != 0 && rg_visit != '' && rg_visit != undefined ) ){

           $.ajax({
               type   : "POST",
               cache  : false,
               url    : href_combo,
               data   : {tipo: 'rgv', rgv: rg_visit},
               success: function( data ){

                   alert( data );
                   if ( data == 1 ) {
                       retorno = true;
                   } // /if ( response == 1 ) {



               } // /success: function( response ){

           });// /$.ajax({

       } // /if ( ( matr_val != old_matr_val ) && ( matr_val != 0 && matr_val != '' && matr_val != undefined ) ){

       return retorno

   } // /$.ck_rgv_exist = function () {

 

o detalhe é que essa função deveria retornar true caso o rg exista ou false caso não

mas retorna false sempre

 

alert( "retorno da função " + $.ck_rgv_exist() ); // false sempre

 

 

onde posso estar errando???

 

obs ja verifiquei a conexão com o banco e a página que faz a busca e está tudo correto.

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

você nunca vai conseguir usar return, por causa do assincronismo do ajax.

veja sobre o objeto deferred:

 

http://www.maujor.com/blog/2011/02/01/o-objeto-deferred-da-jquery-1-5/

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela ajuda

 

mas nao deu certo, ou fiz errado

veja

 



   $.ck_rgv_exist = function () {

       var rg_visit     = $('#rg_visit').val();
       var old_rg_visit = $('#old_rg_visit').val();
       rg_visit         = rg_visit.replace(/[.-]/g,'');
       old_rg_visit     = old_rg_visit.replace(/[.-]/g,'');

       var retorno = false;
       var reqAjax = '';

       if ( ( rg_visit != old_rg_visit ) && ( rg_visit != 0 && rg_visit != '' && rg_visit != undefined ) ){

           reqAjax = $.ajax({
               type   : "POST",
               cache  : false,
               url    : href_combo,
               data   : {tipo: 'rgv', rgv: rg_visit}
           });// /$.ajax({


       } // /if ( ( matr_val != old_matr_val )...


       $.when( reqAjax ).then(function( response ){

           if ( response == 1 ) {
               retorno = true;
           } // /if ( response == 1 ) {

       });

       return retorno

   } // /$.ck_rgv_exist = function () {

 

 

 

agora estive pensando, e se usar a opção async: false no ajax??? pode ser feito assim???

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, se você usar modo sincrono o return "funcionará".

 

teste :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente

 

funcionou!!!

 

mas o que eu tinha feito de errado com o deferred??

 

no mais ta resolvido!!!

 

obrigado!!!

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.