Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图让Jade重定向页面_Javascript_Node.js_Pug - Fatal编程技术网

Javascript 试图让Jade重定向页面

Javascript 试图让Jade重定向页面,javascript,node.js,pug,Javascript,Node.js,Pug,客户端: FB.setAccessToken(req.body.accessToken); FB.api('/me', function(response) { Promise.try(function() { return routes.getUser(response); }).then(function(newResponse) { res.render('groups', newRespon

客户端:

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);
        });
});
一旦到达上面代码中承诺链的末尾,它应该将客户端重定向到一个新视图,
。运行应用程序时,我没有收到任何错误。如何让Jade向客户发送新视图


是否可以渲染替换当前视图的新视图?或者我必须为此重定向页面(在客户端)?

Jade是一个模板引擎,实际上与您的问题无关。Express处理路由,这是您用来定义在何处以及何时加载的路由

使用
$进行AJAX调用。post
不会重新加载页面(这是进行AJAX调用的主要目的)。根据当前代码,您需要向
$.post
调用添加回调,一旦收到数据,就用AJAX调用中的HTML替换当前页面的HTML。您还可以执行类似于
window.location.href='newpage URL here'


最后但并非最不重要的一点是,您可以在服务器上执行
res.redirect
,但它不会出现在显示的当前代码中。无论您使用何种途径加载页面,都需要运行相同的服务器端逻辑,然后执行
res.redirect
,或者直接使用
res.render
加载正确的模板。

与Jade无关,正如michael的回答中所述

是否可以渲染替换当前视图的新视图

否。渲染(在本例中)发生在服务器端。一旦呈现的HTML被发送到客户端并且浏览器显示了它,服务器就不能再直接影响页面了

(*也称为渲染,但这与浏览器实际为客户端绘制页面有关,)

在路由处理程序中执行
res.render
(或
res.send
res.redirect
)后,您将无法从服务器执行任何操作来影响页面,或者更一般地说,发送到客户端的响应,在
res.redirect
中,客户端将只是一个302状态代码和一个位置标头。(在同一处理程序中发送两次响应可能会导致“headers ready sent”错误)

这一切都取决于客户端更改视图,所以

或者我必须为此重定向页面(在客户端)

没错

function checkToken(response){
    $.post('/auth', {
            id: response.authResponse.userID,
            accessToken: response.authResponse.accessToken
    });
}