我正在使用jQuery验证器来验证表单。如果没有使用电子邮件,我的服务器将返回true
,如果正在使用,则返回this email is already being used
之类的内容。使用Firebug,我看到对jQuery验证器的GET请求的响应为true
或this email is already being used
,我相信服务器工作正常。
但是,当服务器返回这些错误时,它们不会显示为错误。但是,正在显示其他非远程错误,例如无效的电子邮件。虽然没有显示远程错误,但它们实际上阻止了表单的提交。
如下图所示,我也使用自定义客户端消息,但我已经删除了他们认为他们可能负责,但得到相同的结果。
EDIT。我的服务器返回'true'
表示没有错误,'some error message'
表示错误。但是,如果我的服务器返回'false'
,则会显示客户端消息。
如何让jQuery验证程序显示服务器生成错误消息?
{
"ignore": [],
"rules": {
"email": {
"email": true,
"maxlength": 45,
"invite":true,
"remote": "openContactEmail"
}
},
"messages": {
"email": {
"email":"Please enter a valid email address.",
"remote":"Another contact is using this email for this account."
}
},
"data": {
"email": {
"id": 123
}
},
"remote": "path_to_validation_file.php"
}
答案 0 :(得分:0)
您可以像这样配置远程返回带有isError和消息的json。
然后配置dataFilter函数以返回消息。
remote: {
url: "path_to_validation_file.php"
},
dataFilter: function(data) {
var json = JSON.parse(data);
if(json.isError == "true") {
return "\"" + json.errorMessage + "\"";
} else {
return '';
}
}
}
他们也在推荐this
答案 1 :(得分:0)
我的服务器一直在返回:
echo($error?'true':$message);
我将其更改为以下内容,现在正在显示服务器生成的消息。
echo($error?json_encode(true):json_encode($message));
每http://jqueryvalidation.org/remote-method/:
服务器端响应必须是必须为“true”的JSON字符串 有效元素,可以是“false”,undefined或null,表示无效 元素,使用默认错误消息。我