elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Plugin con Jquery retornando respuesta AJAX
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Plugin con Jquery retornando respuesta AJAX  (Leído 11,600 veces)
Littl3

Desconectado Desconectado

Mensajes: 239


Tarde o temprano aparece el hombre


Ver Perfil
Plugin con Jquery retornando respuesta AJAX
« en: 24 Mayo 2011, 19:20 pm »

Hola,

Llevo dias quebrandome la cabeza con esto;

Código:

//función que comprueba si el usuario existe

jQuery.fn.existe_user=function(){
$.ajax({
type: "POST",
url: "ajax/existe_user.php",
data: "nombre="+$(this).val(),
success: function(existe){return existe;}
});
}

El archivo existe_user.php esta funcionando correctamente, devuelve la id del usuario con el nombre introducido o 0 si este no existe, lo he comprobado con un alert en el success, el problema lo tengo al retornar la respuesta del plugin.

Código:

$("nombre").existe_user();


Siempre devuelve undefined.

He leido que si la conexión asincrona de ajax etc etc, pero se supone que con el success ya se hace el callback, una posible solución seria definir una variable global en el success pero quiero evitar esto.

En definitiva, no se como hacer que existe_user(); devuelva la respuesta de la petición ajax.

Un saludo.


En línea

bomba1990


Desconectado Desconectado

Mensajes: 395



Ver Perfil WWW
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #1 en: 24 Mayo 2011, 23:38 pm »

no lo devuelve porque hace el return dentro de la funcion ajax, para que lo haga como es debido deberias almacenar el valor en una variable y despues devolverlo, creo que haci te debe funcionar.

Código
  1. jQuery.fn.existe_user=function(){
  2. var user;
  3. $.ajax({
  4. type: "POST",
  5. url: "ajax/existe_user.php",
  6. data: "nombre="+$(this).val(),
  7. success: function(existe){user= existe;}
  8. });
  9. return user;
  10. }
  11. }


En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #2 en: 25 Mayo 2011, 01:31 am »

independientemente... supongo que lo que quieres retornar en realidad es "existe" y no la variable existe
En línea

Ojo por ojo, y el mundo acabará ciego.
RedZer


Desconectado Desconectado

Mensajes: 666



Ver Perfil
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #3 en: 25 Mayo 2011, 16:11 pm »

desde mi punto de vista creo que en el archivo existe_user.php es donde deberias de validar si existe o no existe osea aras tu tipica consulta y dependiendo el resultado imprimiras existe ,o no existe..
En línea

Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo
marko1985

Desconectado Desconectado

Mensajes: 46


Ver Perfil
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #4 en: 25 Mayo 2011, 16:37 pm »

Hola,

Yo hace poco me estaba peleando con un problema casi identico, deberíamos de ver dos cosas importantes, una el código PHP que recibe la petición, yo tenía un problema de código en la variable post, pero igualmente estaría bien ver la función que evalua la peticion y por otra parte, la situación en el HTML de estas funciones de jquery. Podríamos ayudarte mucho mejor.

Venga va, ponlo y te ayudamos. Y si la encuentras por tu cuenta, postealo también así los demás no cometeremos el mismo error. Ta luego
En línea

Littl3

Desconectado Desconectado

Mensajes: 239


Tarde o temprano aparece el hombre


Ver Perfil
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #5 en: 25 Mayo 2011, 18:28 pm »

no lo devuelve porque hace el return dentro de la funcion ajax, para que lo haga como es debido deberias almacenar el valor en una variable y despues devolverlo, creo que haci te debe funcionar.


Código
  1. jQuery.fn.existe_user=function(){
  2. var user;
  3. $.ajax({
  4. type: "POST",
  5. url: "ajax/existe_user.php",
  6. data: "nombre="+$(this).val(),
  7. success: function(existe){user= existe;}
  8. });
  9. return user;
  10. }
  11. }

Gracias bomba, acabo de probarlo pero no funciona, el plugin sigue devolviendo siempre undefined, el archivo php que recibe la petición no tiene misterio, devuelve el numero de usuarios que tienen ese nombre, es decir, 0 o 1.

existe_user.php
Código
  1. <?php
  2. include ("../includes/conexion.php");
  3.  
  4. $usuario = $_POST['nombre'];
  5. $result = mysql_num_rows(mysql_query("select * from usuarios where usuario = '$usuario'")) or die (mysql_error());
  6. echo $result;
  7.  
  8. ?>

No me importa si el plugin devuelve "existe" "no existe" 0 o 1, en este caso esta pensado para que devuelva 0 o 1 el caso es que solo devuelve undefined, yo creo que es por lo que dice bomba, el return en callback de la petición ajax no hace el retorno del plugin si no de la propia petición, tiene sentido.

Vuelvo a poner el código de la petición ajax con un alert de prueba,

Plugin de jquery con petición ajax.

Código
  1.  
  2. jQuery.fn.existe_user=function(){
  3. var existe;
  4.  
  5. $.ajax({
  6. type: "POST",
  7. url: "ajax/existe_user.php",
  8. data: "nombre="+$(this).val(),
  9. success: function(data){
  10. alert(data); //TEST ALERT
  11. existe = data;}
  12. });
  13.  
  14. return existe;
  15. }


El test alert me devuelve 0 si el usuario no existe y 1 si el usuario existe, es correcto,  asi que el problema esta en sacar este dato de la petición ajax y utilizarlo como retorno del plugin.

Adjunto también la llamada al plugin que siempre devuelve undefined;

Código
  1. nombre = $("#nombre");
  2. alert(nombre.existe_user());
  3.  

Aunque la respuesta de la petición ajax a existe_user.php sea 0 o 1 la respuesta del plugin siempre es undefined...
« Última modificación: 25 Mayo 2011, 18:31 pm por Littl3 » En línea

moyo18

Desconectado Desconectado

Mensajes: 61



Ver Perfil WWW
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #6 en: 25 Mayo 2011, 19:14 pm »

q plugin estan usando ? o tu estas haciendo un plugin ?


el codigo para obtener la respues se mira bien, ahora lo q no entiendo muy bien es q es lo q pretendes hacer con esto

Código:
nombre = $("#nombre");
alert(nombre.existe_user());
En línea

Littl3

Desconectado Desconectado

Mensajes: 239


Tarde o temprano aparece el hombre


Ver Perfil
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #7 en: 25 Mayo 2011, 20:24 pm »

El plugin me lo estoy haciendo yo, lo que pretendo sencillamente es pasarle un string con el nombre de usuario al plugin y que me devuelva true o false dependiendo de si el usuario existe o no.
En línea

pipook

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #8 en: 27 Septiembre 2011, 20:29 pm »

buscando como loco en internet por el mismo error que te pasa o pasaba a ti, no se, vi este post y luego de rebuscar y rebuscar encontre una solucion la verdad no me parece por que no veo que deberia sera asi, pero la unica respuesta que consegui es la siguiente que le agregare a tu codigo, es agregar la opcion async: false, asi fue como me funciono, este post es viejo veo, pero igual como no tiene una solucion pos la pongo por si a alguien le interesa jeje

Código:
jQuery.fn.existe_user=function(){
var existe;
 
$.ajax({
type: "POST",
url: "ajax/existe_user.php",
data: "nombre="+$(this).val(),
                        async: false,
success: function(data){
alert(data); //TEST ALERT
existe = data;}
});
 
return existe;
}
En línea

dengue8830

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Plugin con Jquery retornando respuesta AJAX
« Respuesta #9 en: 12 Diciembre 2012, 12:29 pm »

Hola,

 Esto último que dices sucede porque una llamada async: true, es ejecutada, en el instante de tiempo siguiente se ejecuta la siguiente línea después de la llamada ajax. Como la llamda aún no ha terminado y por lo tanto aún no obtuvo el valor, se devuelve el valor de la variable en ese instante, osea undefined. Luego la llamada termina y sale el alert y asigna el valor, pero para entonces el resto ya se ha ejecutado.

 Al no marcarse la llamada como async: false se toma como true por defecto.

 Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
jquery ajax error handler, no funciona
Desarrollo Web
bomba1990 2 4,208 Último mensaje 15 Agosto 2011, 06:45 am
por bomba1990
ayuda con la funcion jquery-ajax $.post(). como se implementa ??
Desarrollo Web
jhonatanAsm 4 5,653 Último mensaje 1 Diciembre 2011, 19:18 pm
por jhonatanAsm
por qué no me funciona la función load() de jquery-ajax « 1 2 »
Desarrollo Web
jhonatanAsm 16 20,801 Último mensaje 9 Noviembre 2012, 13:38 pm
por Imperius
Plugin JS para web modular con AJAX.
Desarrollo Web
WarGhost 0 2,514 Último mensaje 28 Mayo 2012, 07:04 am
por WarGhost
Ayuda con plugin de Jquery
Desarrollo Web
franfis 0 1,858 Último mensaje 31 Mayo 2013, 03:47 am
por franfis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines