尽管正确链接 HTML 仍出现未定义错误
Undefined error despite linking HTML correctly
我已经 link 编辑了到 html 的路由,但是 html 一直显示 agentData 未定义。为什么会给我这个错误
尽管 link 正确。 app.js 代码是我 link 登录和管理路由的位置。 routes是登录的地方
根据用户名和密码控制用户去哪里。一旦他们登录 routes.js 然后在
admin.js,是它从 mysql 数据库获取所有数据并输出为 table 的地方。如您所见,我确实声明了 agentData
在 admin.js。但是,如果我删除 routes.js 中的 app.get/admin,他们会给我另一个错误 cannot /Get admin 错误。什么
我应该怎么做?
routes.js
const express = require('express');
const router = express.Router();
const db = require('../server');
router.get("/", async function (request, response) {
response.render("login.ejs");
});
router.get("/register", async function (req, res) {
res.render("register.ejs");
});
router.post("/login", async function (request, response) {
const { username, password } = request.body;
if (username == 2 && password == 2) {
response.redirect("/admin");
}
else {
return response.status(401).json({
message: "Auth fail",
});
}
});
router.get('/admin', function(req, res, next) {
console.log('reach page');
const sql='SELECT * FROM agentavia';
db.query(sql, function (err, data, fields) {
console.log(data);
if (err) throw err;
res.render('adminhome', { title: 'Agent List', agentData: data});
});
});
router.get('/edit/:id', function(req, res, next) {
const AgentId= req.params.id;
const sql=`SELECT * FROM agentavia WHERE id=${AgentId}`;
db.query(sql, function (err, data) {
if (err) throw err;
res.render('modifyAgent', { title: 'Agent List', editData: data[0]});
});
});
router.post('/edit/:id', function(req, res, next) {
const id= req.params.id;
const updateData=req.body;
const sql = `UPDATE agentavia SET ? WHERE id= ?`;
db.query(sql, [updateData, id], function (err, data) {
if (err) throw err;
console.log(data.affectedRows + " record(s) updated");
});
res.redirect('/admin');
});
module.exports = router;
adminhome.ejs
<table border="1">
<tr>
<th>S.N</th>
<th>Agent Name</th>
<th>Agent ID</th>
<th>AgentStatus</th>
<th>Edit</th>
</tr>
<% if(agentData.length!=0){ var i=1; agentData.forEach(function(data){ %>
<tr>
<td><%=i; %></td>
<td><%=data.agentName %></td>
<td><%=data.agentID %></td>
<td><%=data.agentStatus %></td>
<td><a href="/admin/edit/<%=data.id%>">Edit</a></td>
</tr>
<% i++; }) %> <% } else{ %>
<tr>
<td colspan="7">No Data Found</td>
</tr>
<% } %>
</table>
modifyagent.ejs
<div class="agent-detail">
<form action="<%=(typeof editData!='undefined')?'/admin/edit/'+editData.id:'/admin/create'%>" method="POST">
<label>Agent Name</label>
<input type="agentname" placeholder="Enter Agent Name" name="agentName" required value="<%=(typeof editData!='undefined')? editData.agentName:''%>">
<label>Agent ID</label>
<input type="agentID" placeholder="Enter Agent ID" name="agentID" required value="<%=(typeof editData!='undefined')? editData.agentID:''%>">
<label>Agent Status</label>
<input type="Agent Status" placeholder="Enter Agent Status" name="agentStatus" required value="<%=(typeof editData!='undefined')? editData.agentStatus:''%>">
<button type="submit">Submit</button>
</div>
</div>
1.Issue 在您的文件扩展名中。它应该是 adminhome.ejs 而不是
adminhome.html
或者另一种方法是使用 include
关于如何与 includes 一起使用,请参阅此 Ejs engine with html not working
这个例子我已经测试过 local.It 工作正常
app.js
const express = require('express');
const app = express();
// set the view engine to ejs
app.set('view engine', 'ejs');
// index page
app.get('/', function (req, res) {
var data = [
{ id: 1,agentName: 'Bloody Mary', agentID: 3,agentStatus: 'yes' },
{ id:2,agentName: 'Martini', agentID: 5 ,agentStatus: 'no'},
{ id:3,agentName: 'Scotch', agentID: 10 ,agentStatus: 'yes'}
];
res.render('index', {
agentData: data
});
});
app.listen(3000, () => console.log('listening at 3000'));
Index.ejs
<h2>Loop</h2>
<table border="1">
<tr>
<th>S.N</th>
<th>Agent Name</th>
<th>Agent ID</th>
<th>AgentStatus</th>
<th>Edit</th>
</tr>
<% if(agentData.length!=0){ var i=1; agentData.forEach(function(data){ %>
<tr>
<td><%=i; %></td>
<td><%=data.agentName %></td>
<td><%=data.agentID %></td>
<td><%=data.agentStatus %></td>
<td><a href="/agents/edit/<%=data.id%>">Edit</a></td>
</tr>
<% i++; }) %> <% } else{ %>
<tr>
<td colspan="7">No Data Found</td>
</tr>
<% } %>
</table>
我已经 link 编辑了到 html 的路由,但是 html 一直显示 agentData 未定义。为什么会给我这个错误 尽管 link 正确。 app.js 代码是我 link 登录和管理路由的位置。 routes是登录的地方 根据用户名和密码控制用户去哪里。一旦他们登录 routes.js 然后在 admin.js,是它从 mysql 数据库获取所有数据并输出为 table 的地方。如您所见,我确实声明了 agentData 在 admin.js。但是,如果我删除 routes.js 中的 app.get/admin,他们会给我另一个错误 cannot /Get admin 错误。什么 我应该怎么做?
routes.js
const express = require('express');
const router = express.Router();
const db = require('../server');
router.get("/", async function (request, response) {
response.render("login.ejs");
});
router.get("/register", async function (req, res) {
res.render("register.ejs");
});
router.post("/login", async function (request, response) {
const { username, password } = request.body;
if (username == 2 && password == 2) {
response.redirect("/admin");
}
else {
return response.status(401).json({
message: "Auth fail",
});
}
});
router.get('/admin', function(req, res, next) {
console.log('reach page');
const sql='SELECT * FROM agentavia';
db.query(sql, function (err, data, fields) {
console.log(data);
if (err) throw err;
res.render('adminhome', { title: 'Agent List', agentData: data});
});
});
router.get('/edit/:id', function(req, res, next) {
const AgentId= req.params.id;
const sql=`SELECT * FROM agentavia WHERE id=${AgentId}`;
db.query(sql, function (err, data) {
if (err) throw err;
res.render('modifyAgent', { title: 'Agent List', editData: data[0]});
});
});
router.post('/edit/:id', function(req, res, next) {
const id= req.params.id;
const updateData=req.body;
const sql = `UPDATE agentavia SET ? WHERE id= ?`;
db.query(sql, [updateData, id], function (err, data) {
if (err) throw err;
console.log(data.affectedRows + " record(s) updated");
});
res.redirect('/admin');
});
module.exports = router;
adminhome.ejs
<table border="1">
<tr>
<th>S.N</th>
<th>Agent Name</th>
<th>Agent ID</th>
<th>AgentStatus</th>
<th>Edit</th>
</tr>
<% if(agentData.length!=0){ var i=1; agentData.forEach(function(data){ %>
<tr>
<td><%=i; %></td>
<td><%=data.agentName %></td>
<td><%=data.agentID %></td>
<td><%=data.agentStatus %></td>
<td><a href="/admin/edit/<%=data.id%>">Edit</a></td>
</tr>
<% i++; }) %> <% } else{ %>
<tr>
<td colspan="7">No Data Found</td>
</tr>
<% } %>
</table>
modifyagent.ejs
<div class="agent-detail">
<form action="<%=(typeof editData!='undefined')?'/admin/edit/'+editData.id:'/admin/create'%>" method="POST">
<label>Agent Name</label>
<input type="agentname" placeholder="Enter Agent Name" name="agentName" required value="<%=(typeof editData!='undefined')? editData.agentName:''%>">
<label>Agent ID</label>
<input type="agentID" placeholder="Enter Agent ID" name="agentID" required value="<%=(typeof editData!='undefined')? editData.agentID:''%>">
<label>Agent Status</label>
<input type="Agent Status" placeholder="Enter Agent Status" name="agentStatus" required value="<%=(typeof editData!='undefined')? editData.agentStatus:''%>">
<button type="submit">Submit</button>
</div>
</div>
1.Issue 在您的文件扩展名中。它应该是 adminhome.ejs 而不是 adminhome.html
或者另一种方法是使用 include
关于如何与 includes 一起使用,请参阅此 Ejs engine with html not working
这个例子我已经测试过 local.It 工作正常
app.js
const express = require('express');
const app = express();
// set the view engine to ejs
app.set('view engine', 'ejs');
// index page
app.get('/', function (req, res) {
var data = [
{ id: 1,agentName: 'Bloody Mary', agentID: 3,agentStatus: 'yes' },
{ id:2,agentName: 'Martini', agentID: 5 ,agentStatus: 'no'},
{ id:3,agentName: 'Scotch', agentID: 10 ,agentStatus: 'yes'}
];
res.render('index', {
agentData: data
});
});
app.listen(3000, () => console.log('listening at 3000'));
Index.ejs
<h2>Loop</h2>
<table border="1">
<tr>
<th>S.N</th>
<th>Agent Name</th>
<th>Agent ID</th>
<th>AgentStatus</th>
<th>Edit</th>
</tr>
<% if(agentData.length!=0){ var i=1; agentData.forEach(function(data){ %>
<tr>
<td><%=i; %></td>
<td><%=data.agentName %></td>
<td><%=data.agentID %></td>
<td><%=data.agentStatus %></td>
<td><a href="/agents/edit/<%=data.id%>">Edit</a></td>
</tr>
<% i++; }) %> <% } else{ %>
<tr>
<td colspan="7">No Data Found</td>
</tr>
<% } %>
</table>