繁体   English   中英

如何将变量从 Node JS 传递到前端 JS

[英]How to pass variables from Node JS to frontend JS

我正在尝试将变量从我的 NodeJS 后端传递到 JS 脚本,但到目前为止没有成功。 后端代码如下所示:

应用程序.js

const express = require('express');
const app = express();
const path = require('path');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));


port = process.env.PORT || 3000;
app.listen(port);
app.use(express.static(__dirname + '/'));

app.engine('ejs', require('ejs').renderFile);
app.use(cookieParser());

...
var Orders = (...);
app.get('/', (req,res,next) => {
        res.render("main", {Orders: Orders});
    
    });

其中 Orders 是 MySQL 数据的多维数组。

在前端,我尝试了不同的 AJAX 调用,但来自 app.js 的变量没有得到保存。 不过,它们确实会传递到 main.ejs 文件。

任何建议表示赞赏,这是我的第一个 NodeJS 项目:)

编辑:这就是与 db 相关的代码的样子(它有效):

const mysql = require('mysql');
var con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '12345678',
    database: 'DBName'
    });
    
    con.connect(function(err) {
    if (err) 
    {console.log("error");
    throw err;}
    console.log("Connected!");
    });
 // Get earlier orders for that store
    con.query("SELECT employee_id, datum, time_hour, time_minute, duration, treatment FROM orders WHERE  store_id = *store_id*", function (err, result, fields) {
    if (err){throw err};
    Orders = result;
    });

在 Node.js 中:

app.get('/', (req,res,next) => {
    res.render("main", {Orders: Orders});
});

在 EJS 中:

<script type='text/javascript'>
    var orders = <%-JSON.stringify(Orders)%>
</script>

由于您使用的是 ejs,我认为您应该能够在前端做这样的事情

<script>
   var Orders = <%- JSON.stringify(Orders || null) %>
</script>

这里还有一个类似的问题和一些建议 - Passing an object to client in node/express + ejs?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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