Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数据从服务器代码传递到ejs模板?_Javascript_Node.js_Express_Frontend_Ejs - Fatal编程技术网

Javascript 如何将数据从服务器代码传递到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);

我有一个简单的服务器,我通过浏览器完美地获取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);

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那么,我是否需要在获取数据的代码中添加渲染代码?