处理来自Angular POST的快速重定向

处理来自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)。

+0

如何在Angular中检测'重定向指令'?在使用Express的操作示例中,Angular是否揭示了检测来自服务器的res.redirect('/')的一些方法? – Matt

+0

这取决于开发人员,但在大多数情况下,您希望返回状态代码200(成功)或201(已创建),在这种情况下,只需将'$ location.url('/')'调用放入$ http '成功回调。 – Stewie

+3

如何模仿传统的

发布res.redirect工作的数据的方式? – OMGPOP