Jquery使用未知的POST变量通过远程验证

时间:2012-04-17 03:13:40

标签: php jquery ajax jquery-validate

所以我正在帮助别人解决关于如何使用jquery的validate插件validate textarea的另一个问题。我能想到的最好的解决方案是使用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}

换句话说,它不能仅仅传递一些有用的数据用于进一步的浏览器端逻辑,它必须特定于该元素,并且必须知道它需要满足的参数是什么。

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

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

一个。事先注册可以传入的所有潜在表格值,

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

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

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

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

0 个答案:

没有答案