Теперь я понимаю, что вы имеете в виду.Ваш URL, из которого вы отправляете форму, содержит параметр запроса в URL.Это параметр, к которому вы не можете получить доступ.Хорошо - этот параметр не в параметрах POST, это не в форме.Таким образом, у вас есть 2 варианта.
- Когда вы выводите представление
/third
с помощью вашего запроса GET, вы должны добавить этот параметр запроса в качестве скрытого входного значения в форму, чтобы вы могли опубликовать его какпараметр для серверной части.
Если вы используете Node.js, вам просто нужно изменить свой /third
вид (может быть шаблон Jade / Pug), чтобы иметь
// Make sure this line is in the form that you're posting (syntax is jade - any other way of replacing the idFromServer value with a server value would work just as well.
input(name="id", type="hidden", value="#{idFromServer}")
и обновите ваш код рендеринга вида так:
// It's read from query because we know this one is a get request.
res.render('third', {idFromServer: req.query.id});
После этого req.body.id
должно работать!То, что мы сделали здесь, когда вы получаете третье представление с параметром id, мы помещаем в форму скрытое поле запроса POST.Когда вы выполняете POST, вы можете получить доступ к переменной id, потому что ваша форма имеет поле id со значением.Это распространенное решение, но следует обратить внимание на проверку параметра запроса, потому что теперь вы позволяете людям произвольно передавать значения на вашу страницу - что будет опубликовано, вы никогда не можете быть уверены, что люди не передадут некоторые вредоносные значениятам.
Другой способ сделать это - который я не рекомендую, но это способ - это заглянуть в заголовки.Поскольку ваше текущее решение не имеет скрытого поля формы - вы можете заглянуть в заголовок
referrer , и ваш пропущенный параметр запроса будет там.
Вы можете просто сделать
console.log(req.headers.referer);
в своем представлении /third
, и он должен иметь полный предыдущий URL, который также содержит искомый параметр.