在隐藏的领域代表布尔

时间:2013-09-22 18:55:42

标签: html html-form hidden-field

是否有推荐的方法在HTML表单隐藏字段中表示布尔值?

通常是存在的问题,还是应该使用1/0或“true”/“false”字符串?

2 个答案:

答案 0 :(得分:1)

如果您使用的是PHP会很有用:

test.php?test = false (使用http_build_query( array( 'test'=>'false' ) )构建)

var_dump( $_REQUEST['test'] ); //string(5) "false"

var_dump( (bool)$_REQUEST['test'] ); //bool(true)

var_dump( $_REQUEST['test'] == FALSE ); //bool(false)

var_dump( $_REQUEST['test'] == "false" ); //bool(true)

-

test.php?test = 0 (使用http_build_query( array( 'test'=>FALSE ) )构建)

var_dump( $_REQUEST['test'] ); //string(1) "0"

var_dump( (bool)$_REQUEST['test'] ); //bool(false)

var_dump( $_REQUEST['test'] == FALSE ); //bool(true)

答案 1 :(得分:0)

该逻辑可以通过猴子根据它的字符串值修补变量来实现。在这种情况下,建议的识别布尔值的方法取决于服务器端如何处理这些值。请参阅猴子修补example in Ruby

但是,您可以通过以下方法避免猴子修补:

很可能所有服务器都能很好地使用'true'值来表示True(实际上只要您直接使用字符串就可以了,但是对于惯例来说,这显然是可以理解的)和空字符串'' 表示 False (因为在大多数情况下,空字符串''会被视为false,为此您可以定义input[type=hidden]作为隐藏价值的占位符并分配相应的值。

要使用 Falsy 值定义隐藏输入,您必须将value属性设置为空字符串'',所有其他值将被视为真正 >

<input type="hidden" name="is-truly" value="">

这样,服务器上最有可能的request.POST['is-truly']值将被视为 False (因为空字符串''是Falsy,但您必须仔细检查那个在服务器端)

注意:建议不要使用eval来验证变量类型。