是否有推荐的方法来表示 HTML 表单隐藏字段中的布尔值?
它通常是存在的问题,还是应该使用 1/0 或“true”/“false”字符串?
如果您使用的是 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)
该逻辑可以根据变量的字符串值通过猴子修补来实现。在这种情况下,推荐的识别布尔值的方法取决于服务器端如何处理这些值。请参阅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 来验证变量类型。