Foros del Web » Programando para Internet » Jquery »

Problemas con $.post()

Estas en el tema de Problemas con $.post() en el foro de Jquery en Foros del Web. AMigos, necesito su ayuda. El valor de la variable mensaje no se visualiza en ALERT. Mi teoría es que el valor de la variable mensaje ...
  #1 (permalink)  
Antiguo 28/05/2017, 21:05
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Problemas con $.post()

AMigos, necesito su ayuda. El valor de la variable mensaje no se visualiza en ALERT.
Mi teoría es que el valor de la variable mensaje no sale de $.post().
¿Por qué y cuál es la solución por favor?
Gracias de antemano.

Código HTML:
function formhashregistro(form, email) {
if (!regex.test(email.value)) {
	$("#email").html("<span class='rojo f08'>Email  <strong>"+email.value+"</strong> no es válido. Inténtalo de nuevo22.</span>");
	return false;
}else{
	var textoBusqueda = $("input#email").val();
	$.post("multiUSERS_registro1_buscarINPUT2.php", {valorBusqueda: textoBusqueda},function(mensaje)
		{
			if (mensaje == "Si") {
			    $("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>')
    		}else{$("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");	
			};
		});
	alert(mensaje);		
};
// continua...
}

Última edición por elprofeguti; 28/05/2017 a las 21:10
  #2 (permalink)  
Antiguo 29/05/2017, 17:03
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Problemas con $.post()

es porque la estas colocando fuera de la funcionde respuesta, debes colocarla inmediatamemnte despues del else
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 29/05/2017, 23:57
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas con $.post()

Cita:
Iniciado por xfxstudios Ver Mensaje
es porque la estas colocando fuera de la funcionde respuesta, debes colocarla inmediatamemnte despues del else
Es que, lo que quiero es usar el valor de la variable fuera del $.post(), ¿Cómo lo podría hacer? he intentado de varias formas pero no he podido.
  #4 (permalink)  
Antiguo 30/05/2017, 04:33
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Problemas con $.post()

inicializa una variable vacia antes del $.post y la actualizas con el valor que requieres, luego la usas en el resto del codigo:
Código Javascript:
Ver original
  1. //Inicio la variable de control
  2. var info = '';
  3. $.post('pagina.php',
  4.             {
  5.                 'tipo':'muestra',
  6.                 'valor':'Este es un valor'
  7.             },
  8.             function(data){
  9.             //Actualizo la variable de control con la respuesta
  10.             info = data;
  11.             alert(data);
  12.         });
  13.  
  14. //utilizo la variable donde la necesite
  15. alert(info);
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 30/05/2017, 13:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con $.post()

No logras visualizar el valor ya que se trata de una petición asíncrona (AJAX), mientras que tú intentas ver el valor en el mensaje de alerta de forma síncrona. Así la respuesta la obtengas en milésimas de segundo, el mensaje de alerta aparecerá antes de completarse la petición.

Tienes como opción el utilizar una llamada de retorno o callback:
Código Javascript:
Ver original
  1. function ajax(callback){
  2.     $.post(/* la página de destino */, {/* los valores a enviar */}, callback);
  3. }
  4.  
  5. //Líneas más abajo
  6. ajax(function(mensaje){
  7.     alert(mensaje);
  8. });
  9.  
  10. //Más abajo
  11. ajax(function(mensaje){
  12.     alert(mensaje);
  13. });
  14.  
  15. //Y más abajo
  16. ajax(function(mensaje){
  17.     alert(mensaje);
  18. });

O utilizando el objeto diferido (promesa) de jQuery:
Código Javascript:
Ver original
  1. var ajax = $.post(/* la página de destino */, {/* los valores a enviar */});
  2.  
  3. //Líneas más abajo
  4. ajax.done(function(mensaje){
  5.     alert(mensaje);
  6. });
  7.  
  8. //Más abajo
  9. ajax.done(function(mensaje){
  10.     alert(mensaje);
  11. });
  12.  
  13. //Y más abajo
  14. ajax.done(function(mensaje){
  15.     alert(mensaje);
  16. });

La diferencia sustancial es que, con las llamadas de retorno, se realizará la petición por cada vez que se invoque a la función, mientras que con el objeto diferido solo se realizará la petición una vez y se podrá acceder al mensaje de respuesta cada vez que queramos.

__________________
«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 30/05/2017, 19:05
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas con $.post()

Amigos gracias por sus respuestas pero, he probado lo que me sugiere xfxstudios pero no funciona. También he probado lo que me sugiere Alexis88 y tampoco me funciona. Les explico lo que deseo hacer. Lo de ALERT sólo era una forma para mostrar el valor de la variable.

En el siguiente código, el return false; no funciona. Es decir no retorna al input email. Lo que hace es continuar con el siguiente: if (datepicker.value == ''). Lo que quiero es que detenga la función y retorne al input email.

Cita:
function formhashregistro(form, email) {
if (!regex.test(email.value)) {
// código...
}else{
var textoBusqueda = $("input#email").val();
$.post("multiUSERS_registro1_buscarINPUT2.php", {valorBusqueda: textoBusqueda},function(mensaje)
{
if (mensaje == "Si") {
$("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');return false;
}else{$("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");
};
});
};
// continua...
if (datepicker.value == '') {
// más código...
}
}
También he probado colocando el return false; fuera de $.post(). Y esto sí funciona pero el reutrn false; se ejecuta sin importar si el valor de la variable de mensajes sea Si o No. Es decir que para cualquiera de los dos casos retorna al input. Asumo que no reconoce el IF o no pasa el valor de mensaje.

Cita:
function formhashregistro(form, email) {
if (!regex.test(email.value)) {
// código...
}else{
var textoBusqueda = $("input#email").val();
$.post("multiUSERS_registro1_buscarINPUT2.php", {valorBusqueda: textoBusqueda},function(mensaje)
{
if (mensaje == "Si") {
$("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');
}else{$("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");
};
});
;if (mensaje == "Sí") {return false;};
};
// continua...
if (datepicker.value == '') {
// más código...
}
}
O aguna otra alternativa. ¿Cuál podría ser la solución?
  #7 (permalink)  
Antiguo 31/05/2017, 12:14
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con $.post()

Si no se está ejecutando la sentencia de retorno dentro de la condición es porque esta última no se está cumpliendo y, por ende, pasa al caso contrario o else. Para salir de dudas al respecto, imprime un valor cualquiera por cada caso, por ejemplo:
Código Javascript:
Ver original
  1. if (mensaje == "Si"){
  2.     console.log("Se cumple");
  3. }
  4. else{
  5.     console.log("No se cumple");
  6. }

Luego, dirígete a la consola del navegador (pulsa la tecla F12, luego ve a "Console" y ejecuta el código) y observa el mensaje que se imprime.

Por cierto, esto no parece tener nada que ver con lo que nos dijiste al inicio.

__________________
«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
  #8 (permalink)  
Antiguo 31/05/2017, 15:13
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas con $.post()

Cita:
Iniciado por Alexis88 Ver Mensaje
Si no se está ejecutando la sentencia de retorno dentro de la condición es porque esta última no se está cumpliendo y, por ende, pasa al caso contrario o else. Para salir de dudas al respecto, imprime un valor cualquiera por cada caso, por ejemplo:
Código Javascript:
Ver original
  1. if (mensaje == "Si"){
  2.     console.log("Se cumple");
  3. }
  4. else{
  5.     console.log("No se cumple");
  6. }

Luego, dirígete a la consola del navegador (pulsa la tecla F12, luego ve a "Console" y ejecuta el código) y observa el mensaje que se imprime.

Por cierto, esto no parece tener nada que ver con lo que nos dijiste al inicio.

Amigo Alexis 88, ya hice lo que me indicaste y me sale:
ReferenceError: mensaje is not defined

El código usado fue el siguiente:
Cita:
function formhashregistro(form, email) {
if (!regex.test(email.value)) {
// código...
}else{
var textoBusqueda = $("input#email").val();
$.post("multiUSERS_registro1_buscarINPUT2.php", {valorBusqueda: textoBusqueda},function(mensaje)
{
if (mensaje == "Si") {
$("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');
}else{$("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");
};
});
if (mensaje == "Si"){
console.log("Se cumple");
}
else{
console.log("No se cumple");
}
};
// continua...
if (datepicker.value == '') {
// más código...
}
}
He hechovarias prueba y lo que puedo deducir es que el valor de la variable mensaje no sale de $.post()
Cuál puede ser la solución?

Última edición por elprofeguti; 31/05/2017 a las 15:21
  #9 (permalink)  
Antiguo 31/05/2017, 15:38
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Problemas con $.post()

Prueba usando una variable de control:
Código Javascript:
Ver original
  1. function formhashregistro(form, email) {
  2.  
  3.         var control;//iniciamos una variable de control general
  4.  
  5.         if (!regex.test(email.value)) {
  6.         // código...
  7.         }else{
  8.             var textoBusqueda = $("input#email").val();
  9.             $.post("multiUSERS_registro1_buscarINPUT2.php", {
  10.                     valorBusqueda: textoBusqueda
  11.                 },function(mensaje)
  12.                 {
  13.                     if (mensaje == "Si") {
  14.  
  15.                         control = true;//pasamos a true la variable
  16.                         $("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');
  17.                     }else{
  18.  
  19.                         control = false;//pasamos a false
  20.                         $("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>"); 
  21.                     };
  22.                 });
  23.                 //si es verdadera detengo el codigo
  24.  
  25.                 if (control){
  26.                     control = "";//limpiamos la variable para reutilizarla mas adelante
  27.                     return false;
  28.                 };
  29.         };
  30.         // continua...
  31.         if (datepicker.value == '') {
  32.         // más código...
  33.         }
  34. }
__________________
[email protected]
HITCEL
  #10 (permalink)  
Antiguo 31/05/2017, 16:39
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas con $.post()

Cita:
Iniciado por xfxstudios Ver Mensaje
Prueba usando una variable de control:
Código Javascript:
Ver original
  1. function formhashregistro(form, email) {
  2.  
  3.         var control;//iniciamos una variable de control general
  4.  
  5.         if (!regex.test(email.value)) {
  6.         // código...
  7.         }else{
  8.             var textoBusqueda = $("input#email").val();
  9.             $.post("multiUSERS_registro1_buscarINPUT2.php", {
  10.                     valorBusqueda: textoBusqueda
  11.                 },function(mensaje)
  12.                 {
  13.                     if (mensaje == "Si") {
  14.  
  15.                         control = true;//pasamos a true la variable
  16.                         $("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');
  17.                     }else{
  18.  
  19.                         control = false;//pasamos a false
  20.                         $("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>"); 
  21.                     };
  22.                 });
  23.                 //si es verdadera detengo el codigo
  24.  
  25.                 if (control){
  26.                     control = "";//limpiamos la variable para reutilizarla mas adelante
  27.                     return false;
  28.                 };
  29.         };
  30.         // continua...
  31.         if (datepicker.value == '') {
  32.         // más código...
  33.         }
  34. }
No funciona. He hecho varias pruebas y he comprobado que el valor que se le asigne a la variable dentro de $.post() no sale por nada.
  #11 (permalink)  
Antiguo 31/05/2017, 17:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con $.post()

Cita:
Iniciado por elprofeguti Ver Mensaje
[...] ya hice lo que me indicaste y me sale:
ReferenceError: mensaje is not defined [...]
Eso pasa porque la condición está fuera del alcance de la llamada de retorno del método $.post(). En otras palabras, fuera de $.post(), la variable mensaje no está definida, que es exactamente lo que dice el mensaje. Coloca tu condición entre comentarios y justo debajo o por encima de ella, sin salir del método $.post(), inserta la condición de ejemplo que te indiqué para saber cómo se está evaluando a la variable.

Cita:
Iniciado por elprofeguti Ver Mensaje
[...] He hechovarias prueba y lo que puedo deducir es que el valor de la variable mensaje no sale de $.post()
Cuál puede ser la solución?
Obviamente no puedes acceder al valor de mensaje desde fuera del método por lo que acabo de explicar. Para hacerlo, tendrías que utilizar una de las dos soluciones que te planteé al inicio.

Fuera de esto, me queda una duda: ¿qué es lo que realmente deseas hacer? ¿Acceder al valor de mensaje desde afuera del método o saber cómo se está evaluando su valor en la condición?

Por cierto, para ver el resultado de la condición que planteo, tienes que seguir casi los mismos pasos que realizaste para ver el resultado de la petición asíncrona, solo que ahora debes dirigirte a la pestaña "Console".

__________________
«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
  #12 (permalink)  
Antiguo 31/05/2017, 17:42
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas con $.post()

Cita:
Iniciado por Alexis88 Ver Mensaje
Eso pasa porque la condición está fuera del alcance de la llamada de retorno del método $.post(). En otras palabras, fuera de $.post(), la variable mensaje no está definida, que es exactamente lo que dice el mensaje. Coloca tu condición entre comentarios y justo debajo o por encima de ella, sin salir del método $.post(), inserta la condición de ejemplo que te indiqué para saber cómo se está evaluando a la variable.


Obviamente no puedes acceder al valor de mensaje desde fuera del método por lo que acabo de explicar. Para hacerlo, tendrías que utilizar una de las dos soluciones que te planteé al inicio.

Fuera de esto, me queda una duda: ¿qué es lo que realmente deseas hacer? ¿Acceder al valor de mensaje desde afuera del método o saber cómo se está evaluando su valor en la condición?

Por cierto, para ver el resultado de la condición que planteo, tienes que seguir casi los mismos pasos que realizaste para ver el resultado de la petición asíncrona, solo que ahora debes dirigirte a la pestaña "Console".


Acabo de comprobar que:
1.- La función $.post() demora en dar su respuesta.
2.- En Consola sale lo siguiente:
Hola1
INICIOFIN
cosa
cosa Fuera
3.- El orden debería ser:
Hola1
cosa
cosa Fuera
cosaFIN
4.- Pero el valor de control no cambia porque el $.post() se demora en dar su respuesta y para eso ya llegó hasta la última fila de cpodigo.

Cita:

function formhashregistro(form, email) {

var control;//iniciamos una variable de control general

if (!regex.test(email.value)) {
// código...
}else{
console.log("Hola1");
var control="INICIO";
var textoBusqueda = $("input#email").val();
$.post("multiUSERS_registro1_buscarINPUT2.php", {valorBusqueda: textoBusqueda},function(mensaje)
{

if (mensaje == "Si") {
control="cosa";
$("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');console.log(control);

}else{control="carro";$("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");
};
console.log(control+" Fuera");
}
);console.log(control+"FIN");


};
// continua...
if (datepicker.value == '') {
// más código...
}
  #13 (permalink)  
Antiguo 31/05/2017, 17:51
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas con $.post()

Amigo Alexis88, lo que quiero hacer es lo siguiente.

Estoy validando el campo email.
Cuando el usuario digita el email y le hace clic en ENVIAR. El correo es verificado si existe o no en la base de datos.
En el caso de que el email exista la variable MENSAJE tomará un valor de "Sí" y de inmediato deberá regresar al formulario para volver a digitar el correo.

El problema es que el return false; no funciona cuando lo coloco tal y como lo muestro en el siguiente código. Lo que hace es continuar con el siguiente if (datepicker.value == ''). Lo que quiero es que detenga la función y retorne al input email.


function formhashregistro(form, email) {
if (!regex.test(email.value)) {
// código...
}else{
var textoBusqueda = $("input#email").val();
$.post("multiUSERS_registro1_buscarINPUT2.php", {valorBusqueda: textoBusqueda},function(mensaje)
{
if (mensaje == "Si") {
$("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');return false;
}else{$("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");
};
});
};
// continua...
if (datepicker.value == '') {
// más código...
}
}

También he probado colocando el return false; fuera de $.post(). Y esto sí funciona pero el reutrn false; se ejecuta sin importar si el valor de la variable de mensajes sea Si o No. Es decir que para cualquiera de los dos casos retorna al input. Asumo que no reconoce el IF o no pasa el valor de mensaje.

function formhashregistro(form, email) {
if (!regex.test(email.value)) {
// código...
}else{
var textoBusqueda = $("input#email").val();
$.post("multiUSERS_registro1_buscarINPUT2.php", {valorBusqueda: textoBusqueda},function(mensaje)
{
if (mensaje == "Si") {
$("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');
}else{$("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");
};
});
if (mensaje == "Sí") {return false;};
};
// continua...
if (datepicker.value == '') {
// más código...
}
}


Ahora, creo que el problema no es el valor de la variable sino la demora de $.post(?
Cómo podría solucionarlo?
  #14 (permalink)  
Antiguo 31/05/2017, 17:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con $.post()

Eso pasa por lo que te he venido diciendo: es un proceso asíncrono. Y nuevamente te lo digo: para poder trabajar con la variable que contiene la respuesta del servidor, debes usar llamadas de retorno o el objeto diferido, tal y como te lo sugerí al inicio.

__________________
«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
  #15 (permalink)  
Antiguo 31/05/2017, 17:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con $.post()

Acabo de leer el segundo de tus dos últimos mensajes. Y nuevamente volvemos a un punto anterior. No se ejecuta esa sentencia de retorno porque no se cumple la condición y, por lo tanto, no se ejecuta el bloque de instrucciones correspondiente. Es por esta razón que te sugerí probar con esa condición de ejemplo para saber cómo se está evaluando la variable ya que no estás realizando un proceso de depuración.

__________________
«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
  #16 (permalink)  
Antiguo 31/05/2017, 18:08
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas con $.post()

Alexis88, he hecho lo que me haz indicado, he usado el objeto diferido. Pero igual se demora en dar respuesta. EN Consola sale lo siguiente:
Hola1
INICIOFIN
cosa
cosa Fuera

Dónde puedo estar fallando?

Código Javascript:
Ver original
  1. function formhashregistro(form, email) {
  2. if (!regex.test(email.value)) {
  3. // código...
  4. }else{
  5.     console.log("Hola1");
  6.     var control="INICIO";
  7.     var textoBusqueda = $("input#email").val();
  8.     var ajax = $.post("multiUSERS_registro1_buscarINPUT2.php", {valorBusqueda: textoBusqueda});
  9.     ajax.done(function(mensaje){
  10.         if (mensaje == "Si") {
  11.             control="cosa";
  12.             $("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');console.log(control);          
  13.         }else{
  14.             control="carro";
  15.             $("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");
  16.         };
  17.         console.log(control+" Fuera");
  18.     });
  19.     console.log(control+"FIN");
  20. };
  21. // continua...
  22. if (datepicker.value == '') {
  23. // más código...
  24. }
  25. }
  #17 (permalink)  
Antiguo 31/05/2017, 18:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con $.post()

No vas a poder evitar que la respuesta no se muestre en el orden que lo estableces ya que proviene de un proceso asíncrono, a menos de que realices el proceso de forma síncrona. Por ejemplo:

Código Javascript:
Ver original
  1. $.ajax({
  2.     url: "destino.php",
  3.     type: "POST",
  4.     async: false,
  5.     data: {
  6.         foo: "bar"
  7.     }
  8. });

En lugar de $.post(), usarías el método $.ajax(), que es básicamente el método raíz de todos los métodos asíncronos de jQuery, y que permite realizar este tipo de configuración.

__________________
«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

Última edición por Alexis88; 31/05/2017 a las 18:32 Razón: Error gramatical
  #18 (permalink)  
Antiguo 31/05/2017, 22:34
 
Fecha de Ingreso: diciembre-2011
Mensajes: 17
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problemas con $.post()

Cita:
Iniciado por Alexis88 Ver Mensaje
No vas a poder evitar que la respuesta no se muestre en el orden que lo estableces ya que proviene de un proceso asíncrono, a menos de que realices el proceso de forma síncrona. Por ejemplo:

Código Javascript:
Ver original
  1. $.ajax({
  2.     url: "destino.php",
  3.     type: "POST",
  4.     async: false,
  5.     data: {
  6.         foo: "bar"
  7.     }
  8. });

En lugar de $.post(), usarías el método $.ajax(), que es básicamente el método raíz de todos los métodos asíncronos de jQuery, y que permite realizar este tipo de configuración.


Amigo Alexis88, hice lo que me indicaste me me salió. Estoy muy agradecido por tu asesoría. El código final es el siguiente:
Código Javascript:
Ver original
  1. }else{
  2.     console.log("Hola1");
  3.     var control="INICIO";
  4.     var textoBusqueda = $("input#email").val();
  5.     $.ajax({
  6.         url :'multiUSERS_registro1_buscarINPUT2.php',
  7.         data:{valorBusqueda: textoBusqueda},
  8.         type :'POST',
  9.         async: false,
  10.         success : function(mensaje){
  11.             if (mensaje == "Si") {
  12.             control=true;
  13.             $("#email").html('E-mail: <span class="rojo f08">El correo <strong>'+textoBusqueda+'</strong> ya está registrado, pruebe con otro.</span>');console.log(control);      
  14.             }else{
  15.             control=false;
  16.             $("#email").html("Email: <span class='verde f08'>El correo <strong>"+textoBusqueda+"</strong> no está registrado, puede continuar23.</span>");
  17.             };
  18.             console.log(control+" Fuera");
  19.         }
  20.     });
  21.     if(control){return false;}
  22. };

Pero tengo una duda. En la consola me sale el siguiente mensaje:
Cita:
Un XMLHttpRequest síncrono en el hilo principal está desaprobado por sus efectos negativos en la experiencia del usuario final. Para más ayuda vea http://xhr.spec.whatwg.org/
¿Qué significa dicho mensaje?
  #19 (permalink)  
Antiguo 01/06/2017, 00:11
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problemas con $.post()

Básicamente el mensaje no recomienda realizar procesos síncronos AJAX, especialmente porque el usuario tendrá que esperar a que el proceso se complete para poder continuar; en cambio, cuando el proceso es asíncrono, se ejecuta en background y el usuario puede continuar navegando en la página.

__________________
«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

Etiquetas: Ninguno
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:20.