2016-11-08 2 views
0

Это название вопроса было отредактировано. Исходное название было «Как я могу представить строку в форме и применить ее в качестве параметра запроса в URL-адресе?».Получить request.params через html-форму?


Подумайте о простом сервере, где строка принимается в качестве параметра маршрута, например. с localhost:3000/hello он служит странице, содержащей «привет».

Это легко реализуется, вот простой экспресс-сервер делает, что:

var express = require("express"); 
var app = express(); 

app.get("/:string", function(req, res) { 
    res.send(req.params.string); 
}); 

app.listen(3000); 

Можно ли поставить строку через форму?

ответ

0

Разве это не то, что скрытые параметры для начала ...?

<form action="http://www.example.com" method="GET"> 
    <input type="hidden" name="a" value="1" /> 
    <input type="hidden" name="b" value="2" /> 
    <input type="hidden" name="c" value="3" /> 
    <input type="submit" /> 
</form> 

Я бы не стал рассчитывать на то, что какой-либо браузер сохранит существующую строку запроса в URL-адресе действия.

В спецификации (RFC1866, стр 46; HTML-4.х раздел 17.13.3) состояние:

Если метод «получить», и действие является HTTP URI, агент пользователя принимает значение действие, добавляет `? ' к нему, затем добавляет набор данных формы, закодированный с использованием типа контента «application/x-www-form-urlencoded». Возможно, кто-то может процитировать URL-адрес действия, чтобы вставить знак вопроса и параметры, а затем перекрестите пальцы, чтобы надеяться, что все браузеры оставят этот URL-адрес (и подтвердят, что сервер тоже это понимает). Но я никогда не полагался на это.

Кстати: это не отличается для полей скрытой формы. Для POST URL-адрес действия может содержать строку запроса.

0
  • Присвоение значения req.params с помощью HTML-форма не является по своей природе осуществимо. Формы присваивают значения легко req.query вместо.

  • Определение REQ, Params и req.query описанного в экспрессе 4.x API Reference:

req.params
Это свойство является объектом, содержащим свойство, сопоставленного названными маршруты «параметры». Например, если у вас есть имя route/user /: name, свойство «name» доступно как req.params.name. По умолчанию этот объект имеет значение {}.

req.query
Это свойство является объектом, содержащим свойство для каждого параметра строки запроса на маршруте. Если строки запроса нет, это пустой объект, {}.

  • Arjan «s ответ в этой question приводит скрытые входы типа, которые могут быть полезны в некоторых случаях применения.
Смежные вопросы