Я не могу понять, почему рек.param ('length') возвращает 0
Я использую паруса.js (который основан на Express), и я посылаю form input
с именем length
, который имеет 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"?
Спасибо.
2 ответа:
Просто переименуйте select на
myLength
, потому чтоlength
- это ключевое слово JavaScript, которое сбивает с толку для sails.Правка:
Извините
length
не является ключевым словом, но в javascript значения/объекты (например, строки, массивы) могут иметь свойствоlength
, установленное по умолчанию.Спасибо Феликсу Клин за исправление
"Длина" - это слово, которое выдолжны избегать при обращении к объектам . Таким образом, вы не должны пытаться получить доступ к "длине" напрямую (т. е.
obj.length
). Вероятно, вам следует изменить базовое имя свойства на что-то безопасное, напримерquantity
, Как упоминалось @jaumard:<select name="quantity"></select>
Тогда вы можете получить доступ к
req.params.quantity
.