使用 Expressjs 将 JSON 数据渲染到 ejs 视图
Render JSON data onto ejs view with Expressjs
我正在尝试从网页上的 JSON 文件中获取 2 个值。
obj["fruit"] 和 obj["thyroid"]。我使用ejs作为模板视图引擎和expressjs。
下面的方法说 "fruit" 和 "thyroid" 是未定义的。 console.log 虽然有效。
app.post('/top', function (req, res) {
var obj;
fs.readFile('./object.json', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
console.log(obj["fruit"]);
console.log(obj["thyroid"]);
});
res.render(
'disp.ejs',
{
food: obj["fruit"]
name: obj["thyroid"]
}); // render
});
fs.readFile(path[ options], callback) 是读取文件的异步方式。您的代码设置节点的方式将开始读取文件,然后在文件 data
完成读取之前立即调用 res.render。
如果您将 res.render 放入回调中,它只会在文件读取完毕且 data
变量具有您需要的内容时调用。
例如:
app.post('/top', function (req, res) {
var obj;
fs.readFile('./object.json', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
console.log(obj["fruit"]);
console.log(obj["thyroid"]);
res.render(
'disp.ejs',
{
food: obj["fruit"]
name: obj["thyroid"]
}); // render
});
});
我正在尝试从网页上的 JSON 文件中获取 2 个值。 obj["fruit"] 和 obj["thyroid"]。我使用ejs作为模板视图引擎和expressjs。
下面的方法说 "fruit" 和 "thyroid" 是未定义的。 console.log 虽然有效。
app.post('/top', function (req, res) {
var obj;
fs.readFile('./object.json', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
console.log(obj["fruit"]);
console.log(obj["thyroid"]);
});
res.render(
'disp.ejs',
{
food: obj["fruit"]
name: obj["thyroid"]
}); // render
});
fs.readFile(path[ options], callback) 是读取文件的异步方式。您的代码设置节点的方式将开始读取文件,然后在文件 data
完成读取之前立即调用 res.render。
如果您将 res.render 放入回调中,它只会在文件读取完毕且 data
变量具有您需要的内容时调用。
例如:
app.post('/top', function (req, res) {
var obj;
fs.readFile('./object.json', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
console.log(obj["fruit"]);
console.log(obj["thyroid"]);
res.render(
'disp.ejs',
{
food: obj["fruit"]
name: obj["thyroid"]
}); // render
});
});