未显示jQuery远程验证程序服务器生成的错误消息
我正在使用jQuery验证程序验证表单。如果电子邮件未被使用,我的服务器将返回未显示jQuery远程验证程序服务器生成的错误消息,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用jQuery验证程序验证表单。如果电子邮件未被使用,我的服务器将返回true,如果正在使用,则类似于此电子邮件已被使用。使用Firebug,我看到对jQueryValidator的GET请求的响应是true或此电子邮件已被使用,我相信服务器工作正常 但是,当服务器返回这些错误时,它们不会显示为错误。但是,正在显示其他非远程错误,如无效电子邮件。虽然没有显示远程错误,但实际上它们阻止了表单的提交 如下图所示,我也在使用自定义客户端消息,但我删除了它们,因为我认为它们可能是有责任的,但得到
true
,如果正在使用,则类似于此电子邮件已被使用。使用Firebug,我看到对jQueryValidator的GET请求的响应是true
或此电子邮件已被使用
,我相信服务器工作正常
但是,当服务器返回这些错误时,它们不会显示为错误。但是,正在显示其他非远程错误,如无效电子邮件。虽然没有显示远程错误,但实际上它们阻止了表单的提交
如下图所示,我也在使用自定义客户端消息,但我删除了它们,因为我认为它们可能是有责任的,但得到的结果是相同的
编辑。我的服务器返回'true'
表示无错误,返回'some error message'
表示有错误。但是,如果我的服务器返回“false”
,则会显示客户端消息
echo($error?json_encode(true):json_encode($message));
如何让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"
}
您可以这样配置remote,返回一个包含iError和message的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 '';
}
}
}
他们还建议我的服务器已经返回:
echo($error?'true':$message);
我将其更改为以下内容,现在将显示服务器生成的消息
echo($error?json_encode(true):json_encode($message));
Per:
服务器端响应必须是JSON字符串,对于
有效元素,并且可以是“false”、未定义或null表示无效
元素,使用默认错误消息。我
是的,这似乎是明智的选择,然后我的回答是:)@AnilKumar Yea,似乎是。然而,在我最初的问题中,我指出服务器响应工作正常,但事实并非如此。显示服务器端代码对于除您之外的任何人都能解决此问题至关重要。否则,我们只能猜测您未能将响应作为JSON进行响应。@Sparky是的,我同意,并为没有这样做而感到难过。我完全相信不是,但显然是错的。