Autor
|
Tema: Plugin con Jquery retornando respuesta AJAX (Leído 11,658 veces)
|
Littl3
Desconectado
Mensajes: 239
Tarde o temprano aparece el hombre
|
Hola, Llevo dias quebrandome la cabeza con esto; //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. $("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
|
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. jQuery.fn.existe_user=function(){ var user; $.ajax({ type: "POST", url: "ajax/existe_user.php", data: "nombre="+$(this).val(), success: function(existe){user= existe;} }); return user; } }
|
|
|
En línea
|
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.336
he vuelto :)
|
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
Mensajes: 666
|
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
Mensajes: 46
|
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
Mensajes: 239
Tarde o temprano aparece el hombre
|
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. jQuery.fn.existe_user=function(){ var user; $.ajax({ type: "POST", url: "ajax/existe_user.php", data: "nombre="+$(this).val(), success: function(existe){user= existe;} }); return user; } }
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<?php include ("../includes/conexion.php"); $usuario = $_POST['nombre']; echo $result; ?>
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. jQuery.fn.existe_user=function(){ var existe; $.ajax({ type: "POST", url: "ajax/existe_user.php", data: "nombre="+$(this).val(), success: function(data){ alert(data); //TEST ALERT existe = data;} }); return existe; }
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; nombre = $("#nombre"); alert(nombre.existe_user());
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
|
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 nombre = $("#nombre"); alert(nombre.existe_user());
|
|
|
En línea
|
|
|
|
Littl3
Desconectado
Mensajes: 239
Tarde o temprano aparece el hombre
|
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
Mensajes: 1
|
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 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
Mensajes: 1
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
jquery ajax error handler, no funciona
Desarrollo Web
|
bomba1990
|
2
|
4,239
|
15 Agosto 2011, 06:45 am
por bomba1990
|
|
|
ayuda con la funcion jquery-ajax $.post(). como se implementa ??
Desarrollo Web
|
jhonatanAsm
|
4
|
5,721
|
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,980
|
9 Noviembre 2012, 13:38 pm
por Imperius
|
|
|
Plugin JS para web modular con AJAX.
Desarrollo Web
|
WarGhost
|
0
|
2,549
|
28 Mayo 2012, 07:04 am
por WarGhost
|
|
|
Ayuda con plugin de Jquery
Desarrollo Web
|
franfis
|
0
|
1,890
|
31 Mayo 2013, 03:47 am
por franfis
|
|