0

所以我正在帮助某人解决另一个关于如何使用 jquery 的验证插件验证文本区域的问题。我能想出的最佳解决方案是使用该remote方法通过 ajax 传递字符串,并让服务器端脚本返回字数。

这工作正常,但我遇到了两个让我陷入困境的问题。一个问题,但有两个方面:

为了使元素被视为通过远程响应进行验证,返回的数据(以 json 或 xml 格式)必须基本上采用以下形式:

{"element-name" : true}

例如,如果我想验证answer1表单中名为 的元素id=test,它可能如下所示:

$("#test").validate({
    rules: {
        answer1: {
            remote: {
                url: "check_wordcount.php",
                type: "post",
                data: {
                    wordcount: 5
                }
            }
        }
    }
}

但是有可能不是想要字数,而是我想确认它没有使用亵渎,没有拼写错误,使用提示中随机给出的 3 个关键字等。也许有 4 个文本区域,每个区域都有他们自己的一组关键字,但本质上仍然需要相同的验证。为了validateremote测试视为通过,响应数据必须包含(在上面的示例中):

{"answer1" : true}

换句话说,它不能只为进一步的浏览器端逻辑传回一些有用的数据,它必须特定于该元素,并且必须知道它需要满足哪些参数才能为真。

对于第二部分(并且仅在这种情况下),这并不算太糟糕,因为您可以将元素值以外的其他参数传递给服务器脚本(在这种情况下,最小字数)。

但这确实限制了服务器端脚本的可重用性。如果我有多个表单,或者甚至只有一个包含多个需要相同验证的文本区域的表单怎么办?我觉得选择要么是

一个。预先注册所有可能传入的潜在表单值,

湾。假设第一个值是元素名称/值对

C。或者,在传回之前疯狂地清理数组键,而不完全知道它是否甚至是元素名称。

我唯一的另一个想法是我可以传入另一个名为“元素名称”的参数,看看它是否在 POST 数组中。这仍然让我处于消毒的位置(这当然不是一件坏事,但我不确定多少是太多了)。

是否有更简单的方法来传递服务器端脚本盲信息并期望获得安全、一致的结果?

4

0 回答 0