我的后端验证仅接受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)并将其作为参数发送吗?
最佳答案
引用OP:
“就像将我指定的HTML字段(newEmail)当作参数发送一样?”
当然是。这是remote
方法的默认行为...它从正在求值的字段发送数据。
它正在发送两个数据参数,因为这就是您设置它的方式。
它已经发送了newEmail
字段的值,因为这是您为remote
验证选择的字段。使用remote
方法时,这是默认行为。
它也再次发送与email
相同的值,因为这正是使用data
选项定义它的方式。
data: { email: $('#newEmail').val() },
通常,仅当您要与默认数据一起发送其他数据时,才使用
data
选项。在这种情况下,要评估的字段的值newEmail
是默认数据。您应该完全删除
data
选项,并且仅在后端接受newEmail
。即使没有JavaScript或jQuery Validate插件,newEmail
仍将是提交时自然将这些数据传递到服务器的方式。完全删除
data
选项,然后将标记重命名为email
或修复服务器端代码以接受newEmail
...不要两次发送相同的数据。文档:http://jqueryvalidation.org/remote-method/