我正在尝试传递一个视图和一个json文件,这样我就可以在视图中操作它。
var express = require('express');
var router = express.Router();
var data = require('../monsters.json');
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index');
res.json(data);
});
module.exports = router;`
它通过index.ejs视图的呈现,但在控制台中,它没有显示json文件。也没有任何方法可以操作文件并读取它。我不确定我是不是太傻了,传递它的方法并不存在。
编辑:我现在已经试过了,我很确定它已经通过了,有没有什么方法可以验证文件已经通过了?
router.get('/', function(req, res, next) {
res.render('index');
res.header("Content-Type",'application/json');
res.sendFile(path.join(__dirname, 'monsters.json'));
});`
发布于 2021-07-20 05:09:59
您不能发送多个响应。每个请求都会得到一个响应。
如果要包含的文件是JSON,那么可以使用模板引擎将其嵌入到HTML页面的<script>标记中,这样所有内容都将包含在HTML页面中,并且可以作为唯一的响应。然后,JSON将被自动解析为可供页面的Javascript使用的Javascript对象。
另一种选择是让页面中的Javascript对服务器进行自己的Ajax调用,以在单独的http请求中获取所需的JSON。然后,您将在web服务器上创建一条路由,用于处理该Ajax请求并发回所需的文件。
发布于 2021-07-20 04:38:43
据我所知,您不能响应两次-但是您似乎可以提供一个对res.render(view, locals, callback)的回调,所以也许您可以在那时为它提供服务。否则,我将通过在后端以文件内容作为参数生成视图来将其烘焙到视图中。
有关详细信息,请参阅;http://expressjs.com/en/api.html#res.render
https://stackoverflow.com/questions/68446681
复制相似问题