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'];
$result = mysql_num_rows(mysql_query("select * from usuarios where usuario = '$usuario'")) or die (mysql_error());
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...