Foros del Web » Programando para Internet » Jquery »

Validar segun resultado de una peticios ajax jquery

Estas en el tema de Validar segun resultado de una peticios ajax jquery en el foro de Jquery en Foros del Web. Buenas. tengo una función de validación javascript.... son varios condicionales... en uno de los condicionales llamo una función que hace una petición ajax con jquery. ...
  #1 (permalink)  
Antiguo 25/09/2015, 12:14
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 7 meses
Puntos: 50
Validar segun resultado de una peticios ajax jquery

Buenas.

tengo una función de validación javascript.... son varios condicionales... en uno de los condicionales llamo una función que hace una petición ajax con jquery.

El problema que tengo es que la función no es sync... intente colocarle async = false pero me vota un warning que fue desactivada esa propiedad.

Lo que quiero es validar con php un dato digitado por el usuario pero no me retorna la respuesta en el momento correcto... como hago esto de forma correcta?


Código:
function validaform() {
      if(campo.length == 0){
       }
      elseif(campo2.length == 0){
       }
       elseif(validateinfo(campo2)){
       }
}


function validateinfo(info) {
    $.ajax({
        data:  {
            info: info,
        },
        url:   'validador.php',
        type:  'post',
        success:  function (response) {
            if (response == 1)
                return true;
            else
                return false;
        }
    });
}
  #2 (permalink)  
Antiguo 25/09/2015, 14:12
 
Fecha de Ingreso: abril-2012
Ubicación: murcia
Mensajes: 14
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Validar segun resultado de una peticios ajax jquery

Por lo que veo en tu código no esta recibiendo la variable campo por ninguna parte es por eso que te la devuelve vacía.

Mira la linea 1;
Código Javascript:
Ver original
  1. function validaform(falta_la_variable_campo) {
  2.       if(campo.length == 0){
  3.        }
  4.       elseif(campo2.length == 0){
  5.        }
  6.        elseif(validateinfo(campo2)){
  7.        }
  8. }
  9.  
  10.  
  11. function validateinfo(info) {
  12.     $.ajax({
  13.         data:  {
  14.             info: info,
  15.         },
  16.         url:   'validador.php',
  17.         type:  'post',
  18.         success:  function (response) {
  19.             if (response == 1)
  20.                 return true;
  21.             else
  22.                 return false;
  23.         }
  24.     });
  25. }

En caso de que me equivoque por favor pon el código completo..

Saludos!
  #3 (permalink)  
Antiguo 25/09/2015, 14:30
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 7 meses
Puntos: 50
Respuesta: Validar segun resultado de una peticios ajax jquery

Gracias Zeus.... si la variable si las recibo sino que no puse el codigo completo... puse solo el codigo del problema..... Lo que sucede es que cuando llamo a validateinfo()..... el sigue con la ejecucion y el resultado de esa validacion llega despues.... Lo que quiero es que no siga hasta saber si la validacion fue o no correcta.

gracias
  #4 (permalink)  
Antiguo 25/09/2015, 16:23
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 5 meses
Puntos: 32
Respuesta: Validar segun resultado de una peticios ajax jquery

elseif? Lo siento mucho pero el lenguaje que usáis no es javascript.

A partir de ahora supondré que se ha querido escribir else if.

Añadiré 4 cosillas a tu código para que luego se entienda mi código equivalente pero que funciona:

Código Javascript:
Ver original
  1. function a () {}
  2. function b () {}
  3. function c () {}
  4.  
  5. function validaform(falta_la_variable_campo) {
  6.       if (campo.length == 0) {
  7.           a()
  8.       } else if(campo2.length == 0) {
  9.           b()
  10.       } else if (validateinfo(campo2)) {
  11.           c()
  12.       }
  13. }
  14.  
  15.  
  16. function validateinfo(info) {
  17.     $.ajax({
  18.         data:  {
  19.             info: info,
  20.         },
  21.         url:   'validador.php',
  22.         type:  'post',
  23.         success:  function (response) {
  24.             if (response == 1)
  25.                 return true;
  26.             else
  27.                 return false;
  28.         }
  29.     });
  30. }

Para resolver este tipos de problemas de asincronicidad existe el objeto $.Deferred de jQuery:

Código Javascript:
Ver original
  1. function a () {}
  2. function b () {}
  3. function c () {}
  4.  
  5. function validaform(falta_la_variable_campo) {
  6.       if (campo.length == 0) {
  7.           a()
  8.       } else if(campo2.length == 0) {
  9.           b()
  10.       } else {
  11.           validateinfo(campo2)
  12.           .done(c)
  13.       }
  14. }
  15.  
  16.  
  17. function validateinfo(info) {
  18.     var defer = $.Deferred()
  19.     $.ajax({
  20.         data:  {
  21.             info: info,
  22.         },
  23.         url:   'validador.php',
  24.         type:  'post'
  25.     }).done(function (response) {
  26.         if (response == 1)
  27.             defer.resolve()
  28.         } else {
  29.             defer.reject()
  30.         }
  31.     });
  32.     return defer
  33. }

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils
  #5 (permalink)  
Antiguo 25/09/2015, 23:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Validar segun resultado de una peticios ajax jquery

No creo que haga falta instanciar al objeto $.Deferred() ya que, desde la versión 1.5 de jQuery, el método $.ajax() lo implementa (ver el párrafo debajo del ejemplo).

De cualquier forma, esta es la manera más adecuada para este caso.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 26/09/2015, 01:36
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 18 años, 5 meses
Puntos: 32
Respuesta: Validar segun resultado de una peticios ajax jquery

Escribí de memoria y me olvidé de en validateinfo debería haber retornado:
Código Javascript:
Ver original
  1. return defer.promise()
En lugar del defer a palo seco.

Saludos!
__________________
github.com/xgbuils | npm/xgbuils
  #7 (permalink)  
Antiguo 28/09/2015, 11:20
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años, 7 meses
Puntos: 50
Respuesta: Validar segun resultado de una peticios ajax jquery

gracias por sus respuestas .... ya lo implemente y si funciona pero tengo una duda.... como hago para validar en el else la respuesta del ajax.... lo que pasa es que en el codigo real ese es un else if y por debajo de ese hay otros...

Lo que necesito es algo similar a esto.. se que asi no se hace pero es para explicar lo que necesito...gracias

Código:
else if (validateinfo(campo2).done() === false) {
 // 
}else if () {
}
  #8 (permalink)  
Antiguo 29/09/2015, 19:16
Avatar de siddartha23  
Fecha de Ingreso: septiembre-2013
Mensajes: 357
Antigüedad: 11 años, 3 meses
Puntos: 39
Respuesta: Validar segun resultado de una peticios ajax jquery

Ajax de Jquery tiene una función error() que lo implementas paralelo al done()
__________________
velarde23.com - Soluciones Web

Etiquetas: ajax, javascript, php, resultado
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 11:33.