【发布时间】:2016-10-08 14:12:10
【问题描述】:
嗨,我是一个快速的菜鸟....我有一个 api 外观页面,这一切都在工作,但我想要的是,一旦用户点击路线,我将显示一个加载页面,然后启动api http 请求,然后一旦成功重定向/呈现结果页面。据我了解,您不能在同一条路线上使用 res.render 两次?也许我们的朋友 next();可以帮忙吗?
这是我目前所拥有的:
router.get('/lookup/post/:url', function(req, res){
// Render the loading page...?
res.render('loading');
Lookup.post(req.params.url, function(err, result){
if(err){
}else{
// ...Then once the api lookup comes back ok redirect or render the results page?
res.render('results', {
posts : result.store.postData.posts[0],
votes : result.store.voteData
});
}
});
});
【问题讨论】:
-
你不能渲染页面,一次然后小夜曲它:) 删除`res.render('loading');`,你所拥有的是正确的,你就是这样做的.回调函数执行后显示页面????。
-
谢谢大卫,当然,如果我删除 res.render('loading') 它工作正常......但我确实需要一个加载页面。那么我会渲染加载页面,然后转到 next() 中间件函数.. 就像 http 查找成功后渲染结果页面一样?
-
我不认为您可以使用
res.render()完全从服务器完成那种页面 UI。您可以将loading从服务器移动到客户端,以便客户端显示加载 UI,然后在 POST 结果通过时替换该 UI。 -
感谢 jfriend00 的反馈,是的,我可能会让服务器渲染显示加载器的页面,然后可能使用客户端对 api 进行 ajax 调用,成功后它可以隐藏加载器并填充页面......嗯,一如既往,煎鸡蛋的方法不止一种......
-
对于任何想做类似事情的人。我通过使用 express 来呈现页面来实现这个工作,然后在页面加载时触发一个 ajax 调用到另一个传递它的 url 成功隐藏加载器并使用一些 jQuery 来填充页面上的一些 div。跨度>
标签: node.js express httprequest