我使用asp(JScript作为我的语言)并使用从使用POST发送的表单中获取数据。
具体来说,我有一个文本输入,我想检查它是否为空。如果将其留空,并在被调用页面中包含Response.Write(Request.form('opt2Dur'))
,则不会打印任何内容(不会打印null或未定义)。
我的想法是,它只是一个空字符串,所以我将其包括在内:Response.Write(Request.form('opt2Dur') === '')
,但这会打印false
。
如果我使用Response.Write(Request.form('opt2Dur') == '')
(==不===),它将打印为true。使用===
我可以检查的真正价值是什么?或者,在这种情况下仅用==
进行检查就足够了吗?
感谢您的帮助。
答案 0 :(得分:1)
在具有“灵活”类型和默认值的脚本语言中,很容易与实际数据类型混淆。
每个Request项的实际类型(QueryString和Form,无关紧要)都是某种Array,因为它还支持多个表单元素,并且提交给ASP处理程序的名称相同。它也在documentation中提到:
表单集合由请求正文中的参数名称索引。 Request.Form(element)的值是请求正文中出现的所有元素值的数组。
由于===
也考虑了类型,因为数组不是字符串,所以它会返回false。
我无法找到确切的实际类型并使用局部变量重现它(它不是任何普通数组)所以如果您热衷于使用严格比较运算符,请检查计数:
Response.Write(Request.Form('opt2Dur').Count === 0);