验证用户详细信息更新页面 - username/email 的远程验证
Validating user details update page - remote validation of username/email
我在尝试确保用户的电子邮件地址是唯一的时遇到了 Jquery 验证的问题。
我正在尝试验证用户详细信息更新表单。现在,电子邮件和用户名是唯一的,所以当我尝试使用 Jquery validate 的远程规则对其进行验证时,它只发送输入的值,服务器端代码告诉它它实际上已被占用,即使它已被占用由同一个用户。
所以,我的问题是:是否有某种方法可以通过 jquery 验证来防止这种情况发生?就像,也许是某种数据原始值属性,或者,有没有办法让它通过 ajax 请求发送额外的数据,这样我就可以在服务器端使用它代码检查该值是否被同一用户使用?
这是我的代码。相当标准:
$(".validateForm").validate({
rules:
{
handle:
{
required: true,
remote:'/home/check'
}
},
messages:
{
handle:
{
required: "Must include a handle",
remote:"This handle is already used up. Please, choose another one."
}
}
});
...is there some kind of way to prevent this through jquery validate?
没有
remote
方法没有智能...它只是根据您从服务器发送的内容进行验证。换句话说,您在 /home/check
的服务器端代码必须确定该字段是否有效并发回适当的响应。
您的服务器端代码不应该足够聪明,知道您是在与新用户打交道,还是在与已经登录并编辑其帐户的现有用户打交道?毕竟,完全依赖客户端代码意味着任何人都可以通过简单地禁用或更改 JavaScript.
来解决这个问题
...OR alternatively, is there any way to get it to send additional data with the ajax request
是的。
...[for] options to fully customize the request, see jQuery.ajax
for details
因此,根据文档中的示例,您可以像这样使用 $.ajax
中的 data
选项...
rules: {
handle: {
required: true,
remote: {
url: '/home/check',
data: {
more_stuff: function() {
return "some_value";
}
}
}
}
}
请注意,正在验证的字段的值仍会随之发送。
旁注:you may wish to reconsider using Allman code formatting for your JavaScript.
我在尝试确保用户的电子邮件地址是唯一的时遇到了 Jquery 验证的问题。 我正在尝试验证用户详细信息更新表单。现在,电子邮件和用户名是唯一的,所以当我尝试使用 Jquery validate 的远程规则对其进行验证时,它只发送输入的值,服务器端代码告诉它它实际上已被占用,即使它已被占用由同一个用户。 所以,我的问题是:是否有某种方法可以通过 jquery 验证来防止这种情况发生?就像,也许是某种数据原始值属性,或者,有没有办法让它通过 ajax 请求发送额外的数据,这样我就可以在服务器端使用它代码检查该值是否被同一用户使用?
这是我的代码。相当标准:
$(".validateForm").validate({
rules:
{
handle:
{
required: true,
remote:'/home/check'
}
},
messages:
{
handle:
{
required: "Must include a handle",
remote:"This handle is already used up. Please, choose another one."
}
}
});
...is there some kind of way to prevent this through jquery validate?
没有
remote
方法没有智能...它只是根据您从服务器发送的内容进行验证。换句话说,您在 /home/check
的服务器端代码必须确定该字段是否有效并发回适当的响应。
您的服务器端代码不应该足够聪明,知道您是在与新用户打交道,还是在与已经登录并编辑其帐户的现有用户打交道?毕竟,完全依赖客户端代码意味着任何人都可以通过简单地禁用或更改 JavaScript.
来解决这个问题...OR alternatively, is there any way to get it to send additional data with the ajax request
是的。
...[for] options to fully customize the request, see
jQuery.ajax
for details
因此,根据文档中的示例,您可以像这样使用 $.ajax
中的 data
选项...
rules: {
handle: {
required: true,
remote: {
url: '/home/check',
data: {
more_stuff: function() {
return "some_value";
}
}
}
}
}
请注意,正在验证的字段的值仍会随之发送。
旁注:you may wish to reconsider using Allman code formatting for your JavaScript.