访问Javascript文件中传递的EJS变量
RESTful路由js文件:访问Javascript文件中传递的EJS变量,javascript,node.js,express,Javascript,Node.js,Express,RESTful路由js文件: // index route - show all todos router.get("/", middleware.isLoggedIn,function(req,res) { Todo.find({ "author.id" : req.user._id}, function(err, allTodos) { if(err) { console.log(err); } else { res.render("todo/in
// index route - show all todos
router.get("/", middleware.isLoggedIn,function(req,res) {
Todo.find({ "author.id" : req.user._id}, function(err, allTodos) {
if(err) {
console.log(err);
} else {
res.render("todo/index", {todos: allTodos});
}
});
});
我的index.ejs文件具有:
<script src="/scripts/todoCalendar.js"></script>
但是当我尝试在todoCalendar.js文件中执行console.log(x)
时,它说x
是未定义的
非常感谢您的帮助。说
<script>
var x = "<%= todos %>";
console.log(x);
</script>
<script>
var x = "<%- todos %>";
console.log(x);
</script>
var x=“”;
控制台日志(x);
<script>
var x = "<%= todos %>";
console.log(x);
</script>
<script>
var x = "<%- todos %>";
console.log(x);
</script>
var x=“”;
控制台日志(x);
Javascript:
<script>
var x = document.getElementById("yy").innerText;
console.log(x);
</script>
var x=document.getElementById(“yy”).innerText;
控制台日志(x);
通过格式化从服务器获得的JSON的html打印,并使用javascript(my case jQuery)检索文本、存储文本并将其从html中删除:) EJS:
恐怕您不能在扩展名为.js的文件中使用EJS标记 如果将js代码放在EJS文档的底部,那么就没有问题了 在后端,您可以执行以下操作:
res.render('todo/index', {todos: JSON.stringify(alltodos)});
在ejs文件中,您可以执行以下操作:
<script>
var x= <%- todos %>;
console.log(x);
</script>
var x=;
控制台日志(x);
这个很好用。我刚刚测试了我的项目
如果您想在扩展名为.js的单独文件中使用相同的代码,那么它将不起作用。你会得到一个“意外标记”只有在我的情况下才有效。所有带有“”或带有is todos ejs变量的版本都具有可以使用
调试的数据,我已经尝试了这两种方法res.locals.todo=JSON.stringify(object)<代码>res.render(“test”,{'todos':JSON.stringify({a:1})})
然后var x=
我更喜欢在ejs中进行字符串化,而不是在路由器中,这样可以在视图中访问我的对象。您可能希望使用对象属性,如果您已经将其字符串化,这将是一个问题。因此,在ejs
标记中,只需执行以下操作:varx=这是一个被高度低估的答案。很好的破解!这应该是公认的答案,目前最高评分的答案对对象不起作用。对我不起作用!错误Uncaught TypeError:无法读取null的属性'innerText',声明这样的数组将不起作用。请指导Prathamesh,尝试使用InnnerHtml这可以通过一种巧妙的方式完成,方法是将.js文件内容封装在标记中,将其保存为.ejs文件,并在html.ejs文件中使用指令,然后使用
res.render('todo/index', {todos: JSON.stringify(alltodos)});
<script>
var x= <%- todos %>;
console.log(x);
</script>
<script>
var todos = <%-JSON.stringify(todos)%>;
for (var item of todos) {
console.log(item)
}
</script>