发生的一个问题是使用检查用户名是否有效的函数。 它通过发送包含用户名的ajax调用来完成此操作。
请求网址必须如下所示:
/ AJAX /签的用户名/ usernamehere
当前功能:
var checkUsername = function(value){
var username = false;
jQuery.ajax({
url: "/ajax/check-username/" + encodeURI(value)
}).done(function (data) {
if (data.exists) {
username = false;
} else {
username = true;
}
});
return username;
}
jQuery Validate请求路径如下所示:
/ AJAX /签的用户名/?用户名= usernamehere
jQuery验证:
jQuery('#user').validate({
rules: {
username: {
required: true,
minlength: 6,
remote: {
url: '/ajax/check-username/'
}
}
}
});
如何让远程方法使用我当前的网址?
答案 0 :(得分:0)
您的原始JavaScript函数正在查看数据是否存在。
if (data.exists) {
username = false;
} else {
username = true;
}
但是,as per documentation for the remote
rule,您需要从服务器脚本返回true
才能通过验证。几乎任何其他响应都会触发验证错误消息。
“对于有效元素,响应评估为JSON,必须为
true
,可以是false
,undefined
或null
对于无效元素,使用默认消息;或者字符串,例如'该名称已被采用,请尝试使用peter123'以显示为错误消息。“
您最好的解决方案是在/ajax/check-username/
修改服务器脚本,以便在没有数据时返回true
;或者false
或者你想要的错误信息。
引用OP:
“如何让远程方法使用我当前的网址路由?”
简短的回答:你没有。
远程方法使用以下默认设置将数据作为JSON dataType
发送到您的服务器脚本...
dataType: "json",
data: { nameOfTheElement: valueOfTheElement }
因此,您可以修改服务器脚本以简单地接受此JSON格式的传入数据。
否则,您可以在声明时更改remote
设置。
采取from the docs的例子:
rules: {
username: {
required: true,
minlength: 6,
remote: {
url: "/ajax/check-username/",
type: "post",
data: {
username: function() {
return $( "#username" ).val();
}
}
}
}
}