如何从angularjs访问Node js发布方法以重定向到另一个页面?



我在nodejs post方法中有我的重定向代码。

app.post('/login', function (req, res) {
res.render(__dirname + "/views/registration.html" ,{mob:mob}); 
}

在html中,我正在使用angularjs,

return $http.post('/login',{data }).success(function(data){
console.log(data);
});

当前请求正在进入 POST 方法。 但是页面重定向没有发生。你能帮我这个吗?

您正在尝试使用 post 请求重定向页面,但重定向 post 请求应该只会导致客户端再次将请求发送到返回的重定向地址 - 它不会影响发出请求的页面,因为请求是由 AJAX 发出的,而不是作为页面加载的一部分。

也就是说,您实际上并没有重定向:res.render不是真正的重定向响应。 您实际上是在原始网址上呈现不同的页面。

重定向响应 - 如果这确实是您想要的,则通过返回状态 301 或 302(临时和永久重定向)来完成,并且可以通过使用res.redirect(URL_TO_REDIRECT_TO)来实现。不过,我不认为这是你打算做的。

更重要的是,发布请求重定向可能对您没有用,因为代码中的 post 请求将接收呈现登录页面的输出作为响应。 鉴于这是一个 AJAX 请求,您需要自己以某种方式处理重定向的需求,如下所示:

app.post('/login', (req, res) => {
res.json({
redirectTo: 'URL_TO_REDIRECT_TO'
})
});

然后在客户端:

$http.post('/login', { data }).success((data) => {
if (data.redirectTo) {
// Code to redirect to page.  Window.location.href = data.redirectTo or something less clumsy
}
})

值得注意的是,这不一定是最好的方法,它只是通过响应发布请求来实现URL重定向的一种方式。