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...
                }

            }
        },

我想看看是否有一种方法可以使用 GET 而不是 POST 进行验证,以使其像这样:

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 参数名称是type,而不是 dataType
  2. url参数不作为函数进行评估,它是一个字符串。这可以解释为什么你会得到奇怪的字符,它们是你的函数 urlencoded 的文本。

不过还有两点

  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

我想这没有限制,但你需要dataType: 'GET'改变type: 'GET'

于 2013-05-29T21:39:13.780 回答
1

您的远程语法不正确,没有成功,远程只需要一个基于您提供的数据的布尔值

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