Javascript 如何将数据从服务器代码传递到ejs模板?
我有一个简单的服务器,我通过浏览器完美地获取url上的数据。我正在尝试获取ejs模板中的数据 这就是我获取数据的方式:Javascript 如何将数据从服务器代码传递到ejs模板?,javascript,node.js,express,frontend,ejs,Javascript,Node.js,Express,Frontend,Ejs,我有一个简单的服务器,我通过浏览器完美地获取url上的数据。我正在尝试获取ejs模板中的数据 这就是我获取数据的方式: app.get('/some', function(req, res, next) { var size = 3; var curr = req.query.page || 1; var allSome = Object.assign([], jsFile.some); some = allSome.slice((curr - 1) * size, curr * size);
app.get('/some', function(req, res, next) {
var size = 3;
var curr = req.query.page || 1;
var allSome = Object.assign([], jsFile.some);
some = allSome.slice((curr - 1) * size, curr * size);
some = some.map(function(som) {
var mapSome = Object.assign({}, som);
delete mapSome.var1;
delete mapSome.var2;
return mapSome;
});
return res.json({
some: some,
total: allSome.length,
});
});
app.get('/some', function (req, res, next) {
res.render('events', {data : res.json.some});
});
<ul>
<% data.forEach(function(dat) { %>
<li><%= dat.var3 %></li>
<li><%= dat.var4%>
<% }); %>
</ul>
这就是我试图传递数据的方式:
app.get('/some', function(req, res, next) {
var size = 3;
var curr = req.query.page || 1;
var allSome = Object.assign([], jsFile.some);
some = allSome.slice((curr - 1) * size, curr * size);
some = some.map(function(som) {
var mapSome = Object.assign({}, som);
delete mapSome.var1;
delete mapSome.var2;
return mapSome;
});
return res.json({
some: some,
total: allSome.length,
});
});
app.get('/some', function (req, res, next) {
res.render('events', {data : res.json.some});
});
<ul>
<% data.forEach(function(dat) { %>
<li><%= dat.var3 %></li>
<li><%= dat.var4%>
<% }); %>
</ul>
这就是我试图获取数据的方式:
app.get('/some', function(req, res, next) {
var size = 3;
var curr = req.query.page || 1;
var allSome = Object.assign([], jsFile.some);
some = allSome.slice((curr - 1) * size, curr * size);
some = some.map(function(som) {
var mapSome = Object.assign({}, som);
delete mapSome.var1;
delete mapSome.var2;
return mapSome;
});
return res.json({
some: some,
total: allSome.length,
});
});
app.get('/some', function (req, res, next) {
res.render('events', {data : res.json.some});
});
<ul>
<% data.forEach(function(dat) { %>
<li><%= dat.var3 %></li>
<li><%= dat.var4%>
<% }); %>
</ul>
-
但我得到了:
无法读取未定义的属性“forEach”
我是ejs和前端的新手。如果有人能在这方面帮助我,我将不胜感激。这段代码将用
json
返回,而不是传递给下一个中间件
return res.json({
some: some,
total: allSome.length,
});
用以下方法替换上述块应:
res.render('events', {data : some});
index.js
文件:
let express=require(“express”);
设app=express();
应用程序集(“振动引擎”、“ejs”);
app.listen(80,()=>{
console.log(“iam正常!*:80”)
});
应用程序获取(“/”,(请求,请求)=>{
res.render(“index.ejs”{
数据:{
数据:{
“词汇表”:{
“标题”:“示例词汇表”,
“GlossDiv”:{
“标题”:“S”,
“GlossList”:{
“格洛森特里”:{
“ID”:“SGML”,
“架次”:“SGML”,
“GlossTerm”:“标准通用标记语言”,
“首字母缩略词”:“SGML”,
“Abbrev”:“ISO 8879:1986”,
“GlossDef”:{
“para”:“一种元标记语言,用于创建标记语言,如DocBook。”,
“glosssee也”:[“GML”,“XML”]
},
“glossee”:“标记”
}
}
}
}
}
}
})
})
index.ejs
文件:
文件
你好
(()=>{
让ejsdaetalm=document.getElementById(“EJSData”);
设scElm=document.createElement(“脚本”);
scElm.innerHTML=`const EJSData=()=>{return${ejsDataElm.value}}}`;
文件.正文.附件(scElm);
document.body.removeChild(document.getElementById(“EJSData”);
document.body.removeChild(document.getElementById(“EJSDataLoader”);
})();
结果:
您不需要编写li close标记
<ul>
<% data.forEach(function(dat) { %>
<li><%= dat.var3 %></li>
<li><%= dat.var4%></li>
<% }); %>
</ul>
您有两条具有相同url的路由,因此express将只处理其中一条it@vengleabso那么,我是否需要在获取数据的代码中添加渲染代码?