Как визуализировать EJS на якоре - PullRequest
0 голосов
/ 22 июня 2019

Я хочу что-то сделать (возможно, есть более простой способ, которого я не вижу), но в основном я пытаюсь сделать это - иметь файл EJS с формой регистрации в Mailchimp, и когда регистрация будет заполнена, тогдаон перенаправляет в тот же файл EJS, но на этот раз с переменной, которая добавляет текст в HTML.

Обычно, когда пользователь вводит электронное письмо, мы перенаправляем его в тот же раздел, но на этот раз он добавляет тег с текстом«Спасибо, у нас есть ваша электронная почта, мы скоро свяжемся с вами», вот мой подход:

app.post('/', (req, res) => {
  mailchimp.post('/lists/' + process.env.MAILCHIMP_LIST + '/members', {
      email_address: req.body.email,
      status: 'subscribed'
    }, (err) => {
    if(err){
      console.log(err.title);
      if(err.title == 'Member Exists'){
        res.redirect('/#signup', {
          Status: "Thank you, we've got your email, we'll get in touch with you soon"
        })
      }else{
        res.redirect('/#signup', {
          Status: "We're having problems signing you up, if the problem persists send an email to hello@hibuddie.com"
        })
      }
    }
  });
  res.redirect('/#signup', {
    Status: "Thank you, we've got your email, we'll get in touch with you soon"
  });
});

однако при попытке сделать это я получаю сообщение об ошибке на своей консоли:

express deprecated res.redirect(url, status): Use res.redirect(status, url) instead app.js:45:7

Я знаю, что, вероятно, перенаправление не будет работать для EJS, но я не знаю, как это сделать, поэтому он перенаправляет пользователя на тот же файл EJS с определенным идентификатором, например, в этом случае, например, с регистрацией / #.

Прошу прощения за мой ужасный код, я приступаю к этому, смеется.

1 Ответ

1 голос
/ 22 июня 2019

Вы можете сделать это двумя способами:

Вместо redirect ing вы можете использовать render ing и добавить переменную в функцию рендеринга.

// pass a local variable to the view
res.render('user', { name: 'Tobi' }, function (err, html) {
  // ...
})

и Обработка переменной в вашем файле просмотра. Вы также можете отправить имя anchor в качестве переменной и добавить некоторый JavaScript для его обработки. как:

res.render('user', { anchor: 'signup' }, function (err, html) { ... });

И в файл шаблона добавить немного JavaScript,

window.onload = function (event) {
    window.location.hash = "#{{anchor}}";
};

или . Если вы используете Ajax вызов для вызова API, вы можете просто вернуть статус, например,

res.json({
    success: true,//or false
    data: {
        Status: "some text"
    }
})

И обработайте его с помощью Javascript.

...