所以我正在帮助某人解决另一个关于如何使用 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 个文本区域,每个区域都有他们自己的一组关键字,但本质上仍然需要相同的验证。为了validate
将remote
测试视为通过,响应数据必须包含(在上面的示例中):
{"answer1" : true}
换句话说,它不能只为进一步的浏览器端逻辑传回一些有用的数据,它必须特定于该元素,并且必须知道它需要满足哪些参数才能为真。
对于第二部分(并且仅在这种情况下),这并不算太糟糕,因为您可以将元素值以外的其他参数传递给服务器脚本(在这种情况下,最小字数)。
但这确实限制了服务器端脚本的可重用性。如果我有多个表单,或者甚至只有一个包含多个需要相同验证的文本区域的表单怎么办?我觉得选择要么是
一个。预先注册所有可能传入的潜在表单值,
湾。假设第一个值是元素名称/值对
C。或者,在传回之前疯狂地清理数组键,而不完全知道它是否甚至是元素名称。
我唯一的另一个想法是我可以传入另一个名为“元素名称”的参数,看看它是否在 POST 数组中。这仍然让我处于消毒的位置(这当然不是一件坏事,但我不确定多少是太多了)。
是否有更简单的方法来传递服务器端脚本盲信息并期望获得安全、一致的结果?