处理来自Angular POST的快速重定向
问题描述:
我使用Expressjs作为API,并且我正在使用angular来打那个POST。我想回复表示正在发送的重定向。我的Angular POST的成功返回了我打算重定向到的页面的HTML,但在我的DOM上没有任何反应。我可以看到我的重定向在我的网络流量中工作,并且下面的console.log数据包含重定向页面的DOM。处理来自Angular POST的快速重定向
如何刷新DOM,以反映这个成功的POST,或处理“重定向”?
ANGULAR CODE:
$http({method: 'POST', url: '/login', data:FormData}).
success(function(data, status, headers, config) {
console.log(data)
}).
error(function(data, status, headers, config) {
});
$scope.userName = '';
Expressjs API:
app.post('/login', function(req, res){
var name = req.param('name', null); // second parameter is default
var password = req.param('password', "changeme")
// Lots Authenticationcode
// returns succesfful login
res.redirect('http://localhost:3000/');
}); // end app.post
的console.log(数据)(从角POST成功)
returns the HTML of the page I intended to redirect to
答
AngularJS是指作为一个工作客户端框架加上(大部分)REST API。你的登录API不应该返回一个HTML,它应该返回指令来重定向。因此,对于您的情况,您应该简单地在$http
成功回调中调用$location.url('/')
,该回调将使用Angular路由器“重定向”到“/”(根URL)。
如何在Angular中检测'重定向指令'?在使用Express的操作示例中,Angular是否揭示了检测来自服务器的res.redirect('/')的一些方法? – Matt
这取决于开发人员,但在大多数情况下,您希望返回状态代码200(成功)或201(已创建),在这种情况下,只需将'$ location.url('/')'调用放入$ http '成功回调。 – Stewie
如何模仿传统的