0

JQuery Validator を使用してリモート検証を実行しようとしています:

rules: {
        username: {
            minlength: 6,
            maxlength: 12,
            remote: {
                url: '/users/register/isUserAvailable',
                dataType: 'POST',
                data: {
                    'username': $('#username').val()
                },
                success: function(data) {
                    // success tasks...
                }

            }
        },

POST の代わりに GET を使用して検証を行い、次のようにする方法があるかどうかを確認したいと思います。

rules: {
            username: {
                minlength: 6,
                maxlength: 12,
                remote: {
                    url: function(){
                        var username = $('#username').val();
                        return '/users/register/isUserAvailable/' + username,
                    } 
                    dataType: 'GET',
                    success: function(data) {
                        // success tasks...
                    }

                }
            },

注: 投稿が安全であり、現在正常に動作していることはわかっていますが、これが可能かどうか疑問に思っていました.

4

3 に答える 3

2

あなたの例にはいくつかの構文の問題があります

  1. GET から POST に変更するには、パラメーター名はdataTypeではなく typeです
  2. urlパラメータは関数として評価されず、文字列です。これにより、奇妙な文字が表示される理由が説明されます。これらは、urlencoded 関数のテキストです。

あと2点だけど

  1. リモート メソッドのデフォルトは GET であるため、GET のタイプを指定する必要はありません。
  2. リモート メソッドの成功コールバックの動作がそれを行わないことを知っている場合を除き、リモート メソッドで成功をオーバーライドする場合は注意してください。

ドキュメントから、そのようにシンプルに保ちます

$( "#myform" ).validate({
  rules: {
    email: {
      remote: {
        url: "check-email.php",
        type: "post",
        data: {
          username: function() {
            return $( "#username" ).val();
          }
        }
      }
    }
  }
});
于 2013-05-30T15:16:52.960 に答える
1

リモート構文が正しくありません。成功はありません。リモートは、提供されたデータに基づくブール値のみを期待しています

remote: {
     type: 'GET',
     url: '/users/register/isUserAvailable',
     data: {
      username: function() {
        return $( "#username" ).val();
      }
            }//end remote
于 2013-05-30T01:29:39.500 に答える
1

制限はないと思いますが、変更する必要がありdataType: 'GET'ますtype: 'GET'

于 2013-05-29T21:39:13.780 に答える