Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/12/2016, 23:16
Avatar de ghidalgoram
ghidalgoram
 
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: Funciones Callback - Undefined en variable

Gracias mpozo. Utilicé el código que me presentaste, lo adapté y funciona.

var producto = $("#inpt-producto").val();



Código Javascript:
Ver original
  1. if(producto!=""){
  2.         encontrado = foo(); // Realiza consulta al servidor. El dato retornado es único y no deben exister 2 o más iguales
  3.     }
  4.  
  5.     if(nombre==""){
  6.          $("#mensajes").html("El campo Nombre está vacio");
  7.          datosValidos = false;
  8.     }else
  9.      if(encontrado==1){
  10.           $("#Mensaje").html("Por favor digite otro producto.");
  11.           $("#inpt-producto").focus();
  12.          datosValidos = false;
  13.     }
  14.  
  15.     ......
  16.     mas validaciones....
  17.     ......
  18.     ......
  19.  
  20.    if(datosValidos){
  21.     //Guardar datos en la BD
  22.   }
  23.  
  24.  
  25.  
  26. function foo()
  27. {
  28.  
  29.     var producto = $("#inpt-producto").val();
  30.     var datos = "producto=" + producto ;
  31.  
  32.     url = 'producto.php',
  33.    
  34.     ajax = new XMLHttpRequest(),
  35.     u = null;
  36.  
  37.     ajax.open('POST', url, false);
  38.     ajax.onreadystatechange = function()
  39.     {
  40.         if (ajax.readyState == 4)
  41.         {
  42.             if (ajax.status == 200){
  43.                 u = ajax.responseText;
  44.             }
  45.         }
  46.     };
  47.  
  48.     ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  49.     ajax.setRequestHeader("Connection", "close");
  50.     ajax.send(datos);
  51.    
  52.     return u;
  53. }


Solo un pequeño detalle. Por el momento la llamada al ser "síncrona". Lo dejaré así por un tiempo.


Mientras investigaba, encontré acerca del método "Deferred Object" de jQuery.
No lo conozco o nunca lo he utilzado. Menciona sobre llamadas asíncronas.

Para el caso que expuse en este foro, había pensado cambiar(probar) la forma de consultar a la BD obtener el valor de "encontrado". Es decir,pasar de AJAX nativo a usar AJAX con jQuery. Nunca he utilizado este método "Deferred Object".
Se aplica a mi caso?

También había encontrado sobre las "Promise", tal como lo menciona @Alexis88

Muchas gracias
saludos
__________________
Loading...