1

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

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

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

请注意没有一个键或字符串值是双引号的。这让我的服务器端 JSON 解析器很难过。我该怎么做才能只维护一套规则?

我的想法是,当请求实际发送到服务器时,我的服务器(在我的情况下为 Java servlet)将打开包含变量的 json 文件rules并对其进行解析,以便它知道将什么逻辑应用于发布的参数,并且是接受还是拒绝他们。

但是,JSON 规范不允许像 javascript 数组那样不带引号的键和值,所以我不能存储规则,因为它们通常只用于 jQuery 使用。

4

2 回答 2

0

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

$('form').validate( {"rules":{"userid":{"required":true,"maxlength":20}}} );
于 2012-04-17T02:52:46.600 回答
0

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

{
    key1: 2,
    key2: true
}

等同于:

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

文字数字、布尔值和 null 是 JSON 中的特定值,因此如果您的解析器阻塞它们,那么您的解析器不正确。

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

JSON 实际上是 JavaScript 对象表示法,它被明确设计为有效的 Javascript,以至于这个想法是最坏的情况是你可以使用 eval 来解析它。JQuery 不使用特定的语法,它只需要一个特定的结构化对象,它不是映射,javascript 对象中没有字符串键的概念,只有有效标识符的成员和无效的成员。

如果您有一个名为 people-seen 的字段,那么您可以像这样将该规则输入到验证器中:

{ "people-seen": {
   required: true
}}
于 2012-04-17T02:53:03.650 回答