繁体   English   中英

Express,如何将变量从路由传递到客户端的JS文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM