[英]Express, how to pass variables from routes to JS file that is in the client side
我有一个Express项目,它在一个生成图形的单独文件中有客户端javascript。 我试图将变量从快速路由传递到此javascript文件,以便绘制图形。 我已经尝试了下面的代码,但我收到了以下错误。
错误:找不到模块'js'
app.get('/users', function(req, res) {
res.render(path.join(__dirname, '../views/js/users_chart.js'), {
'users': users
});
});
我认为查看res.render和提供静态文件的Express文档会很有帮助
您无法呈现JS文件。
您似乎想要使用静态user_chart.js
/* server.js */
app.set('view engine', 'ejs');
app.register('.html', require('ejs'));
// serve your js statically
app.use('/js', path.join(__dirname, '../views/js/users_chart.js')
app.get('/users', function(req, res) {
// pass variable to html page
res.render('users.html', {
'users': users
});
});
// in users.html
<script type="text/javascript" src="/js/users_chart.js">
这篇文章也许有帮助
在得到很大的帮助后,找到了解决方案。
为了在客户端有一个javascript文件,它将从路由接收变量,我不得不将路径文件中的JSON变量发送到客户端的javascript文件。 我使用XMLHttpRequest以便在客户端的javascript文件中接收JSON。
Bellow是users_graph.js的代码,它是客户端javascript文件。
var xmlhttp = new XMLHttpRequest();
var url = "/users";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var users = JSON.parse(xmlhttp.responseText).users;
// do something with the users variable that was passed by the routes
}
};
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader('Accept', 'application/json');
xmlhttp.send();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.