Raj*_*Raj 5 javascript node.js express
我试图确定是否可以同时调用res.send(data)然后再调用res.render('reports')。
为了进一步详细解释,当我路由到'/ reports'时,首先在服务器端我对REST进行了REST调用,该API返回了json数据。现在,我希望在客户端上访问此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');
});
Run Code Online (Sandbox Code Playgroud)
每次我在浏览器上点击'/ reports'时,都会看到json值而不是正在呈现的页面,并且控制台抛出错误:发送后无法设置标头。
您可以为此使用内容协商,其中您的AJAX请求设置Accept标头以告诉Express服务器返回JSON而不是HTML:
router.get('/reports', function(req,res) {
...
if (req.accepts('json')) {
return res.send(theData);
} else {
return res.render('reports', ...);
};
});
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用req.xhr(尽管不是100%故障安全)来检查请求是否是通过AJAX调用发出的。
不,您不能同时做两个,但是您可以同时渲染页面并发送数据:
res.render('reports',{data:json});
Run Code Online (Sandbox Code Playgroud)
然后访问新呈现的页面中的数据。
或者,您可以在拨打电话时发送一个标志,然后根据该标志决定是渲染还是发送。
| 归档时间: |
|
| 查看次数: |
13716 次 |
| 最近记录: |