我想做些事情(也许有一种更简单的方法,我没有看到),但是基本上我想做的是拥有一个带有Mailchimp Sign Up表单的EJS文件,当注册被填写时,它将重定向到相同的EJS文件,但是这次使用的变量会将文本添加到HTML。
基本上,当用户输入电子邮件时,我们会将其重定向到同一部分,但这一次它在ap标签上添加了文本“谢谢,我们收到了您的电子邮件,我们会尽快与您联系”,这是我的方法:
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,但是我不知道该怎么做,因此它将用户重定向到具有特定ID的同一EJS文件,在这种情况下说/#signup。
对不起,我的代码太糟糕了,大声笑。
答案 0 :(得分:1)
您可以通过两种方式进行操作:
您可以使用render
ing代替redirect
,并将变量添加到渲染函数。
// 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在前端进行处理。