【问题标题】:JQuery Validator, remote rule with GET instead of POST?JQuery Validator,使用 GET 而不是 POST 的远程规则?
【发布时间】:2013-05-29 21:36:08
【问题描述】:

我正在尝试使用 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...
                    }

                }
            },

注意:我知道帖子是安全的并且目前工作正常,但我只是想知道这是否可能。

【问题讨论】:

    标签: javascript jquery validation jquery-validate


    【解决方案1】:

    您的示例中有一些语法问题

    1. 要从 GET 更改为 POST,参数名称是 type,而不是 数据类型
    2. url 参数不作为函数计算,它是一个字符串。这可以解释为什么你会得到奇怪的字符,它们是你的函数 urlencoded 的文本。

    还有两点

    1. 远程方法默认是GET,所以不需要指定GET的类型
    2. 小心在远程方法中重写 success,除非您知道远程方法的成功回调的工作原理,否则不要这样做。

    from the docs 就这么简单

    $( "#myform" ).validate({
      rules: {
        email: {
          remote: {
            url: "check-email.php",
            type: "post",
            data: {
              username: function() {
                return $( "#username" ).val();
              }
            }
          }
        }
      }
    });
    

    【讨论】:

      【解决方案2】:

      我想对此没有限制,但您需要将 dataType: 'GET' 更改为 type: 'GET'

      【讨论】:

      • 也不起作用,这是在查询字符串中发送的内容:%20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log(用户名);%20%20%20 %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20return%20'/users/register/isUserAvailable/';%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20%20%20%20%20%20%20%20%20%20%7D?username=emanuele
      • 也许 url 不允许作为函数工作,而只能作为变量工作。
      • @Uuid:我相信type 不是问题,GET 是允许的。检查您是否可以为远程定义指定data 属性。
      • 它确实允许毫无问题地指定方法,但奇怪的是,每当我尝试返回函数内的 url 时都会抛出上述问题。 %20...
      【解决方案3】:

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

      remote: {
           type: 'GET',
           url: '/users/register/isUserAvailable',
           data: {
            username: function() {
              return $( "#username" ).val();
            }
                  }//end remote
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 2010-09-07
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        相关资源
        最近更新 更多