Foros del Web » Programando para Internet » Javascript » Frameworks JS »

problema con funcion que utiliza $.post

Estas en el tema de problema con funcion que utiliza $.post en el foro de Frameworks JS en Foros del Web. bueno amigos estoy validando si un usuario existe o no. para esto utilizo la siguiente funcion. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function validateUser ...
  #1 (permalink)  
Antiguo 18/03/2011, 17:34
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años
Puntos: 12
problema con funcion que utiliza $.post

bueno amigos estoy validando si un usuario existe o no.

para esto utilizo la siguiente funcion.


Código Javascript:
Ver original
  1. function validateUser(campo){
  2.         $("#user_error").removeClass('true');
  3.         $("#user_error").show();
  4.         $.post("acciones/validarUsuario.php",{
  5.                 value:campo
  6.             },function(msg){
  7.                 $("#user_error").html(msg);
  8.                 if(msg == 'valido'){
  9.                     $("#user_error").addClass('true');
  10.                     $("#user_error").html('Valido :D');
  11.                     return true;
  12.                 }else{
  13.                     return false;
  14.                 }
  15.         });
  16.     }

ahora esta funcion la llamo dos veces, una para valida con keyup y otra para validar al enviar el formulario.

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $("#user").keyup(function(){
  3.         validateUser($("#user").val());
  4.     });
  5.     $("#registrar").click(function(){
  6.         if(validateUser($("#user").val())){
  7.             alert('enviado :D');
  8.         }
  9.     });
  10. });


la cosa es que nunca obtengo el "true" ya que al parecer la funcion termina sin esperar la respuesta de "$.post"

¿que puedo hacer con eso?

gracias :D
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #2 (permalink)  
Antiguo 18/03/2011, 17:46
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: problema con funcion que utiliza $.post

Es que una petición AJAX, es asincronica, la idea es justamente que no espere la respuesta, igualmente no tenes acceso al return del callback y $.post devuelve un objeto jqXHR,
lo que quieras hacer que dependa de la respuesta, lo tenes que hacer dentro del callback.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 18/03/2011, 20:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: problema con funcion que utiliza $.post

Cita:
Iniciado por masterpuppet Ver Mensaje
Es que una petición AJAX, es asincronica, la idea es justamente que no espere la respuesta, igualmente no tenes acceso al return del callback y $.post devuelve un objeto jqXHR,
lo que quieras hacer que dependa de la respuesta, lo tenes que hacer dentro del callback.

Saludos.
Correcto... aunque tambien puedes hacer la llamada de forma sincronica, osea, que SI espere respuesta, usando el metodo $.ajax en vez de $.post agregando el parametro async: false

Suerte.
  #4 (permalink)  
Antiguo 18/03/2011, 21:16
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años
Puntos: 12
Respuesta: problema con funcion que utiliza $.post

estimados se pasaron :D voy a probar y les cuento ! karma para los dos ! =D
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #5 (permalink)  
Antiguo 21/03/2011, 16:13
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años
Puntos: 12
Respuesta: problema con funcion que utiliza $.post

bueno no me ha funcionado, he dejado la funcion de tal forma.

Código Javascript:
Ver original
  1. function validateUser(campo){
  2.         $("#user_error").removeClass('true');
  3.         $("#user_error").show();
  4.         $.ajax({
  5.             type:"POST",
  6.             url:"acciones/validarUsuario.php",
  7.             data:"value="+campo,
  8.             async: false,
  9.             success: function(msg){
  10.                 $("#user_error").html(msg);
  11.                 if(msg == 'valido'){
  12.                     $("#user_error").addClass('true');
  13.                     $("#user_error").html('Valido :D');
  14.                     return true;
  15.                 }else{
  16.                     return false;
  17.                 }                  
  18.             }
  19.         });
  20.     }
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #6 (permalink)  
Antiguo 21/03/2011, 17:07
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: problema con funcion que utiliza $.post

Es que seguis con el mismo problema, validateUser debe retornar el valor, algo asi:

Código Javascript:
Ver original
  1. function validateUser(campo) {
  2.     $("#user_error").removeClass('true');
  3.     $("#user_error").show();
  4.     var result = false;
  5.     $.ajax({
  6.         type:"POST",
  7.         url:"acciones/validarUsuario.php",
  8.         data:"value="+campo,
  9.         async: false,
  10.         success: function(msg){
  11.             $("#user_error").html(msg);
  12.             if(msg == 'valido'){
  13.                 $("#user_error").addClass('true');
  14.                 $("#user_error").html('Valido :D');
  15.                 result = true;
  16.             }                  
  17.         }
  18.     });
  19.     return result;
  20. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: funcion, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:18.