我不知道为什么 req.param('length') 返回 0

I can't find out why req.param('length') is returning 0

我正在使用 Sails.js(基于 Express),我正在发送一个名为 lengthform input,它的 value'1000',像这样:

<select name="length">
    <option value="1000">1000</option>
</select>

服务器端,我做了一些测试,这就是我得到的

req.param('length');  // returns 0
req.params.length;    // returns 0
req.params.all()      // returns { length: '1000' }

我还检查了开发人员控制台的网络选项卡,我看到正在发出 POST 请求,参数为 length = "1000"

要么我遗漏了一些非常明显的东西,要么这是一个奇怪的故障。 为什么会这样,我怎样才能得到长度的值而不是得到“0”?

谢谢。

"length"是你should avoid when accessing objects的一个词。因此,您不应尝试直接访问 "length"(即 obj.length)。您可能应该将基础 属性 名称更改为安全的名称,例如 @jaumard 提到的 quantity

<select name="quantity"></select>

然后就可以访问req.params.quantity.

只需将您的 select 重命名为 myLength,因为 length 是一个 JavaScript 关键字,这会让 sails 感到困惑。

编辑:

抱歉 length 不是关键字,但在 javascript values/objects(如字符串、数组)中可以默认设置 属性 length .

感谢 Felix Kling 的更正