未显示jQuery远程验证程序服务器生成的错误消息

未显示jQuery远程验证程序服务器生成的错误消息,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用jQuery验证程序验证表单。如果电子邮件未被使用,我的服务器将返回true,如果正在使用,则类似于此电子邮件已被使用。使用Firebug,我看到对jQueryValidator的GET请求的响应是true或此电子邮件已被使用,我相信服务器工作正常 但是,当服务器返回这些错误时,它们不会显示为错误。但是,正在显示其他非远程错误,如无效电子邮件。虽然没有显示远程错误,但实际上它们阻止了表单的提交 如下图所示,我也在使用自定义客户端消息,但我删除了它们,因为我认为它们可能是有责任的,但得到

我正在使用jQuery验证程序验证表单。如果电子邮件未被使用,我的服务器将返回
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是的,我同意,并为没有这样做而感到难过。我完全相信不是,但显然是错的。