3

リモートメソッドを使用するか、リモートメソッドを模倣するメソッドを追加して、入力したデータをWebサービスに送信し、エラー状態とエラーメッセージを含むjson応答を取得できるようにしようとしています。

だから私はこのjson応答を持っています:

{
    "isError": "true",
    "errorMessage": "The User Name you chose is already in use. Please enter another name."
}

リモートメソッドを使用してtrue/false応答を取得しましたが、追加のデータは使用していません。

どんな助けでもいただければ幸いです。

編集

これを試しましたが、変数がグローバル変数ではないため、もちろん機能しませんでした...

$.validator.addMethod("uniqueUserName", function(value, element) {

      $.ajax({
        type: "POST",
         url: "js/username.json",
         contentType: "application/json; charset=utf-8",  
        dataType:"json",
        data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}", 
        dataFilter: function(data) {
            var isError = data.isError;
            var uniqueError = data.errorMessage;
            if(isError == "true"){
                return false;
            }
        }

     })

}, uniqueError); //this last line would typically be: }, "my error message");

フィドルを参照してください:http: //jsfiddle.net/jasonday/fWk5u/

4

2 に答える 2

7

私はそれを理解することになった。戻りの成功は、私が失敗していたものです-私は戻り続け、trueを返し、またはfalseを返し続けました-そしてそれらのすべてが検証に「失敗」しました。

remote: {
    type: "POST",
    url: "js/username.json",
    contentType: "application/json; charset=utf-8",  
    dataType:"json",
    data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}",
    dataFilter: function(data) {
        var json = JSON.parse(data);
        if(json.isError == "true") {
            return "\"" + json.errorMessage + "\"";
        } else {
            return success;
        }

    }
}
于 2012-05-25T13:09:58.203 に答える
0

validvalを見てください。

統合、微調整(カスタム検証、カスタムアラート)、さらにここのようにAJAXにいじるのはかなり簡単だと思いました

編集
では、データオブジェクトをどこに投稿しますか?js / username.jsonは何をしますか?そこに投稿する場合は、オブジェクトを目的の形式で返すために、そこで何かを行う必要があります。

したがって、一意の電子メールを確認したい場合は、サーバーに投稿し、そこで確認を行い、オブジェクトを作成します

 object.response.success = true/false
 object.response.data = "some text to display"

次に、AJAXを介してobject.responseを返します。

そのようです:

 $.ajax({
      async: false,
      type: "post",
      url: "somewhere_to_handle_username_check",    
      data: data: "{'" + $('#enterEmail').attr('id') + "': '" + $('#enterEmail').val() + "'}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      // AJAX OK, return true/false
      success: function(objResponse){
           if (objResponse = "true"){
                alert("success");
            } else {
                alert("failed, username already taken");
            }
      // AJAX Failed
      error: function () { 
        alert("failed - AJAX failed");
        }
    });

私は通常、クライアント側でメールアドレスが入力されたことを検証し(上記のvalidavalを使用)、値を確認して応答オブジェクトを作成するためにメールアドレスをサーバーに送信します。

お役に立てれば。そうでない場合は、AJAXリクエストで何をすべきか、js/username.jsonで何をするかを教えてください。

于 2012-05-22T21:13:31.040 に答える