Выдайте файл вместе с именем пользователя в URL-адрес после отправки формы с помощью выражения

Самый быстрый способ сделать это:

    {React.cloneElement(this.props.children, this.props)}
0
задан Brad Vanderbush 13 July 2018 в 23:29
поделиться

1 ответ

Чтобы изменить URL-адрес после сообщения формы, вы должны использовать res.redirect() для перенаправления браузера на новый URL-адрес. Затем браузер запросит новый URL-адрес, и вам понадобится маршрут для этого нового URL-адреса, чтобы вернуть желаемое содержимое страницы.

router.post('/', (req, res) => {
    // other code here to process form data
    newUser.save(..., function(err) {
        if (err) {
            console.log(err);
            res.sendStatus(500);
        } else {
            // build new URL here
            res.redirect(newURL);
        }
    });
}

Если вы хотите отобразить имя пользователя на странице к которому вы перенаправляетесь, вы должны использовать шаблон EJS, в котором есть место в нем для имени пользователя, и вы получите имя пользователя из любого места, куда вы поместите его в URL-адрес, и отправьте его в res.render() для шаблона, чтобы EJS вставьте имя пользователя в нужное место.

Если вы делаете какой-то логин, вы можете захотеть сделать весь процесс по-разному. Возможно, вам захочется создать объект сеанса пользователя (возможно, с express-session) на сервере и сохранить имя пользователя там, чтобы в любое время вы хотите отобразить страницу, имя пользователя можно извлечь из объекта сеанса на стороне сервера, а не помещать это в URL. Это, вероятно, немного более надежным.

1
ответ дан jfriend00 17 August 2018 в 12:05
поделиться
  • 1
    Я понимаю, как получить параметры из URL-адреса на веб-странице .. но после отправки формы, как мне получить имя пользователя, добавленное в конец newUrl .. так что это будет localhost: 3000 / newUrl / john после этого я получит john и использует EJS и выберет имя пользователя & quot; john & quot; на страницу. res.redirect (newUrl) просто переходит к новому URL-адресу. Мне также нужно указать имя пользователя в URL-адресе. После того, как я это выясню, я тоже хочу посмотреть на сессии. – Brad Vanderbush 14 July 2018 в 02:17
  • 2
    @BradVanderbush - пожалуйста, перечитайте мой ответ. Вы создаете новый url и используете res.redirect() для ответа. Я думаю, что все это в ответе. Если вы не понимаете что-то в ответе, задайте более конкретный вопрос о том, что вы не понимаете. – jfriend00 14 July 2018 в 02:20
  • 3
    @BradVanderbush. Вместо res.render() вы создаете новый URL с именем в нем и используете res.redirect(newURL). Затем создайте маршрут, который обрабатывает новый URL. Когда браузер получит перенаправление, он запросит новый URL-адрес, и ваш сервер получит запрос на новый URL-адрес, а затем вы можете отобразить страницу в этом обработчике запросов с именем в нем. – jfriend00 14 July 2018 в 02:32
  • 4
    Вы правы, мне не хватало всего смысла, я думал, что res.redirect () должен иметь законный рабочий url. – Brad Vanderbush 14 July 2018 в 03:40
  • 5
    @BradVanderbush - res.redirect() Требуется законный рабочий URL. Вы вызываете res.redirect(url). Браузер получает ответ перенаправления, а затем запрашивает новый URL-адрес. Затем ваш сервер будет обслуживать страницу с этого нового URL-адреса. Это хорошая вещь. Если URL-адрес отображается в браузере, ваш сервер лучше знает, что с ним делать - так все работает в браузере. – jfriend00 14 July 2018 в 03:41
Другие вопросы по тегам:

Похожие вопросы: