1

我正在使用 asp(JScript 作为我的语言)并从使用 POST 发送的表单中获取数据。

具体来说,我有一个文本输入,我想检查它是否为空。将其留空并包含Response.Write(Request.form('opt2Dur'))在被调用页面中时,不会打印任何内容(不打印 null 或 undefined)。

我的想法是它只是一个空字符串,所以我包括了这个:Response.Write(Request.form('opt2Dur') === ''),但是这个打印了false

Response.Write(Request.form('opt2Dur') == '')如果我使用(== not ===),它将打印 true 。我可以检查的真正价值是什么===?或者,在这种情况下,用 just 检查就足够了==吗?

谢谢你的帮助。

4

1 回答 1

1

在具有“灵活”类型和默认值的脚本语言中,很容易与实际数据类型混淆。

每个 Request 项的实际类型(QueryString 和 Form,没关系)是某种数组,因为它还支持多个同名的表单元素提交给 ASP 处理程序。它也在文档中提到:

Form 集合由请求正文中的参数名称索引。Request.Form(element) 的值是请求正文中出现的所有元素值的数组

由于===还考虑了类型,因此在您的情况下它将返回 false,因为数组不是字符串。

我无法找到确切的实际类型并使用局部变量(它不是任何普通数组)重现它,因此如果您热衷于使用严格比较运算符,请检查计数:

Response.Write(Request.Form('opt2Dur').Count === 0);
于 2013-06-09T06:33:04.783 回答