将 var 从服务器传递到客户端
Passing a var from server to client
我正在使用 node.js + Express + EJS。
在我的路线中,我正在访问外部 API 以获取一些数据:
router.get('/', function(req, res, next) {
var request = https.get(url + 'products.json', function(response){
var buffer = "",
route;
response.on("data", function (chunk) {
buffer += chunk;
});
response.on("end", function (err) {
// finished transferring data
// dump the raw data
console.log(buffer);
console.log("\n");
data = JSON.parse(buffer);
route = data;
});
});
res.render('index', {
title: 'Home',
products: JSON.stringify(data)
});
});
exports.router = router;
exports.products = data;
我的目标是将这个数据变量传递给客户端。
在我的 app.js 文件中,我设置了 -
app.locals.productsData = routes.products;
在我的 index.ejs 文件中,这就是我想要做的 -
<script>
var products = <%= products %>;
</script>
或诸如
之类的东西
<script>
var products = <%= {{productsData}} %>;
</script>
我似乎找不到传递这些数据的方法。
你能帮帮我吗?
您在错误的地方调用了 res.render
(数据只有在稍后 request
发送其 end
事件时才会有其值。
因此您需要将 res.render
移动到 end
事件回调中。
尝试
response.on("end", function (err) {
// finished transferring data
// dump the raw data
var data = JSON.parse(buffer);
res.render('index', {
title: 'Home',
products: JSON.stringify(data)
});
});
和
<script>
var products = "<%= products %>";
</script>
我正在使用 node.js + Express + EJS。
在我的路线中,我正在访问外部 API 以获取一些数据:
router.get('/', function(req, res, next) {
var request = https.get(url + 'products.json', function(response){
var buffer = "",
route;
response.on("data", function (chunk) {
buffer += chunk;
});
response.on("end", function (err) {
// finished transferring data
// dump the raw data
console.log(buffer);
console.log("\n");
data = JSON.parse(buffer);
route = data;
});
});
res.render('index', {
title: 'Home',
products: JSON.stringify(data)
});
});
exports.router = router;
exports.products = data;
我的目标是将这个数据变量传递给客户端。 在我的 app.js 文件中,我设置了 -
app.locals.productsData = routes.products;
在我的 index.ejs 文件中,这就是我想要做的 -
<script>
var products = <%= products %>;
</script>
或诸如
之类的东西 <script>
var products = <%= {{productsData}} %>;
</script>
我似乎找不到传递这些数据的方法。
你能帮帮我吗?
您在错误的地方调用了 res.render
(数据只有在稍后 request
发送其 end
事件时才会有其值。
因此您需要将 res.render
移动到 end
事件回调中。
尝试
response.on("end", function (err) {
// finished transferring data
// dump the raw data
var data = JSON.parse(buffer);
res.render('index', {
title: 'Home',
products: JSON.stringify(data)
});
});
和
<script>
var products = "<%= products %>";
</script>