传递额外参数的JQuery远程验证?

时间:2014-12-19 21:09:20

标签: jquery jquery-validate

我的后端验证只接受1个参数:email

当我查看Firebug时,我可以看到请求的URL发送了2个参数:

https://example.com/rest/checkDupEmail?newEmail=myEmail%40myEmail.com&email=

这是验证码......

HTML

<input type="textbox" name="newEmail" id="newEmail"/>

JS

validator = $('#emailForm').validate({
    rules: {
        newEmail: {
            required: true,
            remote: {
                url: '/rest/checkDupEmail',
                data: { email: $('#newEmail').val()},
                dataFilter: function(data) {
                    var json = JSON.parse(data);
                    console.log($('#newEmail').val());
                    console.log(data);
                }
            }
        }
    }
});

就像它取了我指定的HTML字段(newEmail)并将其作为参数发送?

3 个答案:

答案 0 :(得分:4)

引用OP

  

&#34;它就像是我指定的HTML字段(newEmail)并将其作为参数发送?&#34;

是的,当然。这是remote方法的默认行为......它从正在评估的字段发送数据。


它发送了两个数据参数,因为这是您设置它的方式。

  1. 它已经发送了newEmail字段的值,因为它是您为remote验证选择的字段。这是使用remote方法时的默认行为。

  2. 它还会再次发送与email相同的值,因为这正是您使用data选项定义它的方式。

    data: { email: $('#newEmail').val() },
    
  3. 通常,data选项仅在您希望发送 其他数据默认数据时使用。在这种情况下,要评估的字段的值newEmail是默认数据。

    您应该完全删除data选项,并且只接受后端的newEmail。即使没有JavaScript或jQuery Validate插件,newEmail也正是这些数据在提交时自然会如何通过服务器传递的。

    完全删除data选项,然后将您的标记重命名为email或修复服务器端代码以接受newEmail ...执行两次发送相同的数据。

    文档http://jqueryvalidation.org/remote-method/

答案 1 :(得分:0)

我认为,您必须更改第2点,作为文档示例。

代替

data: { email: $('#newEmail').val() },

您必须使用

data: { email: function() { return $('#newEmail').val(); } },

答案 2 :(得分:0)

使电子邮件字段为必填字段,并发送电子邮件,并发出远程请求以检查给定的地址是否已被占用。此外,http方法设置为“ post”,并且用户名与电子邮件地址一起发送

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