首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一个路由EXPRESS JS上传递多个请求

如何在一个路由EXPRESS JS上传递多个请求
EN

Stack Overflow用户
提问于 2021-07-20 04:31:15
回答 2查看 21关注 0票数 0

我正在尝试传递一个视图和一个json文件,这样我就可以在视图中操作它。

代码语言:javascript
复制
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文件。也没有任何方法可以操作文件并读取它。我不确定我是不是太傻了,传递它的方法并不存在。

编辑:我现在已经试过了,我很确定它已经通过了,有没有什么方法可以验证文件已经通过了?

代码语言:javascript
复制
router.get('/', function(req, res, next) {
  res.render('index');
  res.header("Content-Type",'application/json');
   res.sendFile(path.join(__dirname, 'monsters.json'));
});

`

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-20 05:09:59

您不能发送多个响应。每个请求都会得到一个响应。

如果要包含的文件是JSON,那么可以使用模板引擎将其嵌入到HTML页面的<script>标记中,这样所有内容都将包含在HTML页面中,并且可以作为唯一的响应。然后,JSON将被自动解析为可供页面的Javascript使用的Javascript对象。

另一种选择是让页面中的Javascript对服务器进行自己的Ajax调用,以在单独的http请求中获取所需的JSON。然后,您将在web服务器上创建一条路由,用于处理该Ajax请求并发回所需的文件。

票数 0
EN

Stack Overflow用户

发布于 2021-07-20 04:38:43

据我所知,您不能响应两次-但是您似乎可以提供一个对res.render(view, locals, callback)的回调,所以也许您可以在那时为它提供服务。否则,我将通过在后端以文件内容作为参数生成视图来将其烘焙到视图中。

有关详细信息,请参阅;http://expressjs.com/en/api.html#res.render

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68446681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档