如何在 PHP、HTML 表单和 Javascript 之间传递布尔值

10
我有一个使用HTML表单和JavaScript验证的PHP程序。在HTML表单中有一个隐藏的字段,其中包含一个布尔值,由PHP设置,在提交时由JavaScript进行验证,并传递到另一个PHP页面。
当我尝试使用PHP布尔值设置HTML字段的值时,JavaScript将其评估为空白,因此我使用了1和0并进行数字比较,现在它可以正常工作。
我的问题是:在这种情况下,最佳实践是什么?如何让JavaScript读取PHP驱动的HTML隐藏字段中的true/false值而不使用1和0?还是完全不建议这样做?
2个回答

15

好消息是PHP和JavaScript对于哪些值是真值或假值的概念相似。

  • 一个空字符串在两种语言中都是假值。一个不为空的字符串(PHP中除了0)在两种语言中都是真值。
  • 数字0在两种语言中都是假值。其他所有数字在两种语言中都是真值。

由于表单元素的值始终为字符串,正如Quentin在他的回答中指出的那样,一个好的实践可能是使用空字符串作为假值,而使用其他值(例如'true')作为真值。但我认为您使用01 并测试数值是最安全的方法,因为它不会引起误导。(当有人看到'true'时,他们可能会认为'false'也可用作假值)。


7
控件的值始终是字符串类型。

如果您需要布尔值,则必须以某种方式进行编码,然后再以某种方式进行解析。

使用0或1是一种完全可行的方法。您还可以使用truefalse(您可以在PHP端使用json_encode生成),并将该值传递给JSON.parse。还有许多类似的选项。


你能否写一下如何在 HTML 中将字符串编码为布尔值,然后将数据传递给 PHP 脚本呢? - Wijay Sharma
1
@WijaySharma — 我已经做了。请阅读答案的最后一段。 - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接