FB.setAccessToken(req.body.accessToken);
FB.api('/me', function(response) {
Promise.try(function() {
return routes.getUser(response);
}).then(function(newResponse) {
res.render('groups', newResponse);
}).catch(function(e) {
console.error(e);
});
});
客户端:
function checkToken(response){
$.post('/auth', {
id: response.authResponse.userID,
accessToken: response.authResponse.accessToken
});
}
一旦到达上面代码中 Promise 链的末尾,它应该将客户端重定向到一个新 View ,groups
。运行应用程序时我没有收到任何错误。如何让 Jade 向客户发送新 View ?
是否可以渲染一个新 View 来替换当前 View ?或者我必须为此重定向页面(在客户端)?
最佳答案
Jade 是一个模板引擎,实际上与您的问题没有任何关系。 Express 处理路由,您可以使用路由来定义加载内容、加载位置和加载时间。
使用 $.post
进行 AJAX 调用不会重新加载您的页面(这是进行 AJAX 调用的主要目的)。根据您当前的代码,您需要向 $.post
添加回调调用,收到数据后,将当前页面的 HTML 替换为 AJAX 调用中的 HTML。您也可以执行类似 window.location.href = 'new page URL here';
的操作.
最后但并非最不重要的一点是,你可以这样做res.redirect
在服务器上,但它不会出现在当前显示的代码中。无论您使用哪种路径加载带有 JavaScript 的页面,都需要运行相同的服务器端逻辑,然后执行 res.redirect
或者直接使用 res.render
加载正确的模板就在那时。
关于javascript - 尝试让 Jade 重定向页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35028555/