我试图确定是否可以同时调用 res.send(data) 和 res.render('reports') 。
为了进一步详细解释,当我路由到“/reports”时,首先在服务器端对返回 json 数据的 API 进行 REST 调用。现在我希望在客户端上访问此 json 数据,为此我从 javascript 进行 ajax 调用。因此使用 res.send(),但我也想在这次调用中渲染页面
所以它看起来像我的以下内容服务器端代码
router.get('/reports', function(req,res){
//Making the REST Call to get the json data
//then
res.send(json);
res.render('reports');
});
每次我在浏览器上点击“/reports”时,我都会看到 json 值而不是正在呈现的页面,并且我的控制台会抛出错误:发送后无法设置标头。
你可以使用内容协商 http://expressjs.com/4x/api.html#req.accepts为此,您的 AJAX 请求设置Accept
header 告诉你的 Express 服务器返回 JSON 而不是 HTML:
router.get('/reports', function(req,res) {
...
if (req.accepts('json')) {
return res.send(theData);
} else {
return res.render('reports', ...);
};
});
或者,您可以使用以下命令检查请求是否是通过 AJAX 调用发出的:req.xhr http://expressjs.com/4x/api.html#req.xhr(尽管这不是 100% 的故障安全)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)