是否有推荐的方法在HTML表单隐藏字段中表示布尔值?
通常是存在的问题,还是应该使用1/0或“true”/“false”字符串?
答案 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来验证变量类型。