10

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

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

4

2 回答 2

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)

于 2014-03-07T13:29:49.723 回答
1

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

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

很可能所有服务器都可以很好地使用'true'value 来表示 True (实际上,只要您直接使用字符串,就没有问题,但为了约定,它是可以清楚理解的)和表示False的空字符串''(因为空字符串在大多数情况下,您可以将input[type=hidden]定义为隐藏值的占位符并分配相应的值。''

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

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

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

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

于 2016-03-16T20:55:28.560 回答