Javascript 获取错误“;“未定义标题”;用Express实现EJS模板引擎
我正在学习Javascript 获取错误“;“未定义标题”;用Express实现EJS模板引擎,javascript,node.js,express,template-engine,ejs,Javascript,Node.js,Express,Template Engine,Ejs,我正在学习NodeJS,我正在使用EJS作为模板引擎。但是,每当我点击我的注册页面上的注册按钮时,我就会得到一个错误,即标题未定义。 这是我的密码 users.js head.ejs header.ejs 切换导航 register.ejs 登记 请使用以下表格注册 名称 电子邮件 用户名 密码 确认密码 轮廓图像 登记 我不明白为什么会这样。我试过了,但没用。任何帮助都将不胜感激 我无法准确理解当请求到达/时,路由器将重定向到哪里 router.get('/', f
NodeJS
,我正在使用EJS
作为模板引擎。但是,每当我点击我的注册页面上的注册
按钮时,我就会得到一个错误,即标题未定义
。
这是我的密码
users.js
head.ejs
header.ejs
切换导航
register.ejs
登记
请使用以下表格注册
名称
电子邮件
用户名
密码
确认密码
轮廓图像
登记
我不明白为什么会这样。我试过了,但没用。任何帮助都将不胜感激 我无法准确理解当请求到达
/
时,路由器将重定向到哪里
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
通常,对于/
,它会重定向到索引
模板。例如,使用EJS,您可以重定向到模板
router.get('/', function(req, res, next) {
res.render('index', {param: value});
});
当您的请求点击/
时,它会重定向到包含head.ejs
的模板,该模板需要发送title
参数
在获取的过程中,您正确发送了以下内容:
router.get('/register', function(req, res, next) {
res.render('register',{
'title': 'Register'
});
});
但是,当您的请求到达POST方法时,在所有逻辑之后,您没有重定向到模板,而是将其重定向到/
,没有参数。如果您的/
路由使用您的head.ejs
访问模板,则会出现此错误
在您的情况下,即使重定向到index.ejs
或messageUserAdded.ejs
(例如),我也会使用render
方法调用它来呈现ejs模板(而不是res.location('/');
和res.redirect('/');
),如下所示:
res.render('index', {title: 'User Successfully Added'});
为了增加一种可能性,你可以为成功的消息创建一个模板,然后你可以向它传递一条消息,根据你做对的每一页进行定制。例如,类似以下内容的模板:
successfulMessage.ejs
希望它能帮助您解决问题。我无法准确理解当请求到达
/
时,您的路由器将重定向到哪里
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
通常,对于/
,它会重定向到索引
模板。例如,使用EJS,您可以重定向到模板
router.get('/', function(req, res, next) {
res.render('index', {param: value});
});
当您的请求点击/
时,它会重定向到包含head.ejs
的模板,该模板需要发送title
参数
在获取的过程中,您正确发送了以下内容:
router.get('/register', function(req, res, next) {
res.render('register',{
'title': 'Register'
});
});
但是,当您的请求到达POST方法时,在所有逻辑之后,您没有重定向到模板,而是将其重定向到/
,没有参数。如果您的/
路由使用您的head.ejs
访问模板,则会出现此错误
在您的情况下,即使重定向到index.ejs
或messageUserAdded.ejs
(例如),我也会使用render
方法调用它来呈现ejs模板(而不是res.location('/');
和res.redirect('/');
),如下所示:
res.render('index', {title: 'User Successfully Added'});
为了增加一种可能性,你可以为成功的消息创建一个模板,然后你可以向它传递一条消息,根据你做对的每一页进行定制。例如,类似以下内容的模板:
successfulMessage.ejs
希望它能帮助您解决这个问题。尝试了
res.render
而不是res.location
,但仍然存在相同的错误您使用res.render('yourTemplate',{title:'your title')了吗?您可以在问题中添加重定向到的模板吗?另外,您是否保留了到/使用res.send('respond with resource')的路由?我放置了res.render('index',{title:'Members'}
。但仍然得到了相同的错误。尝试了res.render
而不是res.location
,但仍然存在相同的错误您使用res.render('yourTemplate',{title:'your title'})?您能在问题中添加重定向到的模板吗?另外,您是否保留了到/with res.send('respond with resource')的路由?我将res.render('index',{title:'Members')}
。但仍然得到相同的错误。
<html>
<head><title> <%=title%> </title></head>
<body>
<h1>This works!</h1>
<h2> <%=messageTitle%> </h2>
<span> <%=messageDetails%> </span>
</body>
</html>
// After all the logic
res.render('successfulMessage', {
title: 'Success',
messageTitle: 'Account Created',
messageDetails: 'John has been added to our database!'
})