Réponse d'erreur de jQuery Valider à distance ne fonctionne pas

Je suis en utilisant le remote méthode de jQuery de Validation pour vérifier si un nom d'utilisateur existe déjà dans le système. Le script does_user_exist.php retourne 1 si l'utilisateur existe.

$registration.find(".username").each(function() {
    var $this = $(this);
    $this.rules('add', {
        remote: {
            url: "does_user_exist.php",
            type: "post",
            dataType: "json",
            data: {uname: function(){ return $this.val(); } },
            async: false,
            success: function (data) { //returns 1 if user exists
                if (data) {
                   console.log("false!");
                   return "Sorry, that user already exists." //doesn't work
                   //return false;        //doesn't work
                   //return data;         //doesn't work
                   //return {"string"};   //doesn't work
                   //return {0: "string"};//doesn't work
                } else {
                   console.log("true!");
                   return true;
                }
            }
        },
        messages: {
            remote: jQuery.format("{0}") //doesn't work
            //remote: "Simple string doesn't work here either"
        }
    });
});

Mon problème est que le message d'erreur n'est jamais affiché. Je peux voir de mon console.log de sortie qu'il a correctement les journaux false! lorsque l'utilisateur existe, mais le message d'erreur n'apparaît jamais.

Comme vous pouvez le voir dans le commentaire sur les lignes, j'ai été à essayer de comprendre exactement ce que je fais mal via deviner et vérifier, sur l'hypothèse que je suis en quelque sorte le retour de la chaîne d'erreur dans le mauvais format, mais je ne suis pas avoir de succès.

Edit3:
J'ai été en mesure d'obtenir le backend réponse à être changé. Le PHP est maintenant en envoyant JSON codé true/false, en vain. Nous avons essayé d'envoyer le backend de réponse dans l'une des manières suivantes, mais le plugin ne semble pas être l'attraper n'importe ce que nous faisons:

json_encode( false )
json_encode( '["false"]' )
json_encode( "false" )
json_encode( ["false"] )
"false"
false
NULL
""
0

Aussi loin que je peux dire sur la base des documents, l'un d'eux doit avoir travaillé:

L'évaluation de la réponse JSON et doit être vrai pour les éléments valides,
et peut-être tout faux, indéfini ou null pour les éléments invalides, à l'aide de
le message par défaut;

Remarque, la réponse à cette question peut être liée à ce problème.

Voici le code révisé:

$registration.find(".username").each(function() {
    var $this = $(this);
    remote: {
        url:  "does_user_exist.php",
        type: "post",
        data: {entityExistence: function(){return $this.val();} },
        success: function(data){ console.log(data); }
    },
    messages: {
        remote: "Sorry, that username is not available."
   }
});

Le script PHP est toujours de retour true ou false correctement. Selon la documentation, de tout, sauf pour true devrait déclencher le message d'erreur. Mais le message d'erreur ne vient pas jusqu'à. Je sais que les messages d'erreur est de travailler parce qu'il y a d'autres contrôles fonctionnent très bien (par exemple,rangelength, retiré de collé le code ici pour plus de clarté).

Vous n'avez pas lu la documentation de la méthode à distance? Il explique clairement ce qui doit être retourné par votre code serveur.
En passant, oui j'ai lu la documentation, spécifiquement cette partie: l'évaluation de La réponse JSON et doit être vrai pour les éléments valides, et peut-être tout faux, indéfini ou null pour les éléments invalides, en utilisant le message par défaut; ou une chaîne de caractères, par exemple. "Ce nom est déjà pris, essayez peter123 au lieu de" pour afficher le message d'erreur.
En citant aussi: "doit être true pour les éléments valides" ~ ne revient true lorsque l'utilisateur n'existe pas? Est votre 1 être interprété comme une chaîne ou comme true? Nous savons déjà 1 n'est pas "false, indéfini ou null"
Oui, c'est ce que la documentation est en train de dire. Par "réponse", il désigne la réponse de votre serveur de script: "réponse est évaluée comme JSON et être true pour la validité des éléments, et peut être tout faux, indéfini ou null pour les éléments invalides..."
Vous n'avez pas besoin de return quelque chose en particulier par l'intermédiaire de votre JavaScript. Les docs sont de parler de ce qui vient à partir de votre serveur.

OriginalL'auteur brentonstrine | 2013-10-15