2011-01-14 23 views
7

Ich benutze jquery Validierung Plugin.Ajax-Validierung mit jquery?

In meinem Formular muss ich überprüfen, ob der Spitzname bereits verwendet wird oder nicht.

Dafür bieten sie remote Schlüssel, um Ajax Anruf zu machen. Für mich funktioniert der Ajax Anruf korrekt und gibt wahr oder falsch zurück. Aber es erlaubt, auch wenn der zurückgegebene Wert falsch ist, was nicht passieren sollte.

Mein Validierungscode aussieht,

$(function() { 
    $("#myform").validate({ 
     rules: { 
      fullName: { 
       required: true, 
       minlength: 5 
      }, 
      nickName: { 
       required: true, 
       minlength: 4, 
       alphaNumeric: true, 
       remote: { 
        url: "NickNameChecker", 
        type: "post", 
        data: { 
         nickName: function() { 
         return $("#nickName").val(); 
        }}, 
        success: function(data) { 
         return data; 
        } 
       } 
      } 
     }, 
     messages: { 
      fullName: { 
       required: "Please Enter Your Full Name.", 
       minlength: "Full Name should have minimum 5 letters." 
      }, 
      nickName: { 
       required: true, 
       minlength: "Nick Name should contain minimum 4 letters.", 
       remote: "This nickname is already in use." 
      } 
     } 
    }); 
}); 

dankbar wären Irgendwelche Vorschläge !!!

Danke!

Lösung:

Die Lösung ist nur in meinem Code.

Ich habe gerade den Erfolgsteil entfernt und versucht. Es funktioniert super!

+1

Was ist der Rückgabewert von der Remote-Seite? – Chandu

+0

@Cybernate: Wenn Nick nicht in Gebrauch ist 'true' sonst' false' –

+3

@TamilVendhan: kein Experte auf der 'remote' Option, aber keines der Beispiele, die ich die' success' Option finden konnte angegeben zeigte werden. –

Antwort

1

(Expanded Erklärung von Kommentar oben):

Die success Option ist für jQuery Validate der Remote-Validierung nicht gültig. Sie sollten in der Lage sein, nur eine URL angeben, für die Validierung zuzugreifen, die wahr oder ein falsy Wert/Fehlermeldung zurückgibt:

Die Serverside Ressource wird über $ Schnipsel (XMLHttpRequest) genannt und erhält einen Schlüssel/Wert pair, entsprechend dem Namen des validierten Elements und seinem Wert als GET-Parameter. Die Antwort wird als JSON ausgewertet und muss wahr für gültige Elemente sein, und sein kann jede falsch, nicht definiert oder null für ungültig Elemente, die Standardnachricht verwendet wird; oder eine Zeichenfolge

Siehe documentation for remote für weitere Informationen darüber, wie Sie die Option verwenden. Ihr Code würde wahrscheinlich so etwas wie folgt aussehen:

$(function() { 
    $("#myform").validate({ 
     rules: { 
      fullName: { 
       required: true, 
       minlength: 5 
      }, 
      nickName: { 
       required: true, 
       minlength: 4, 
       alphaNumeric: true, 
       remote: { 
        url: "NickNameChecker", 
        type: "post", 
        data: { 
         nickName: function() { 
         return $("#nickName").val(); 
        } 
       } 
      } 
     }, 
     messages: { 
      fullName: { 
       required: "Please Enter Your Full Name.", 
       minlength: "Full Name should have minimum 5 letters." 
      }, 
      nickName: { 
       required: true, 
       minlength: "Nick Name should contain minimum 4 letters.", 
       remote: "This nickname is already in use." 
      } 
     } 
    }); 
}); 
0

Das jQuery Validation Team beriet eine andere Art und Weise nicht-boolean in this GitHub issue APIs zu behandeln.

Das vorgeschlagene Verfahren nutzt jQuery.ajax() ‚s dataFilter Eigenschaft.

form.validate({ 
    rules: { 
     username: { 
      required: true, 
      remote: { 
       url: "users2.json.php", 
       dataFilter: function(data) { 
        var json = JSON.parse(data); 
        if(json.status === "success") { 
         return '"true"'; 
        } 
        return "\"" + json.error + "\""; 
       } 
      } 
     } 
    } 
});