使用相同的规则进行jQuery验证和服务器端验证

时间:2012-04-17 02:38:57

标签: jquery json validation

由于用户看到的规则应与服务器使用的规则相同,因此我希望将验证规则存储在JSON文件中,并为两种情况加载它们。

但是,jQuery验证插件似乎使用了无效JSON的设置,例如

$('form').validate( {
    rules : {
        userid : {
            required : true,
            maxlength : 20
        }
    }
});

请注意,没有任何键或字符串值是双引号。这使我的服务器端JSON解析器感到悲伤。我能做什么才能保持一套规则?

我的想法是,当请求实际发送到服务器时,我的服务器(在我的情况下是Java servlet)将打开具有rules变量的json文件并解析它,以便它知道什么逻辑应用于已发布的参数,以及是否接受或拒绝它们。

但是,JSON规范不允许使用不带引号的键和javascript数组之类的值,因此我无法存储规则,因为它们通常仅用于jQuery。

2 个答案:

答案 0 :(得分:1)

虽然JavaScript文字并不总是有效的JSON,但JSON始终是有效的JavaScript表达式。你可以使用它:

$('form').validate( {"rules":{"userid":{"required":true,"maxlength":20}}} );

答案 1 :(得分:0)

有效的json是Javascript对象文字语法的子集。基本上,

{
    key1: 2,
    key2: true
}

与:

相同
{
    "key1": 2,
    "key2": true
}

文字数字,布尔值和null是JSON中的特定值,因此如果您的解析器对它们进行扼流,那么您的解析器就不正确。

您可以在Javascript中使用“JSON”。

JSON实际上是JavaScript Object Notation,它明确地设计为有效的Javascript,以至于最坏的情况是您可以使用eval来解析它。 JQuery不使用特定的语法,它只需要一个特定的结构化对象,它不是一个地图,javascript对象中没有字符串键的概念,只有有效标识符的成员,以及不是的成员。

如果您有一个名为people-seen的字段,那么您可以将该规则输入验证器,如下所示:

{ "people-seen": {
   required: true
}}