2013-10-24 4 views
0

약속을 해결하고 일부 사용자 데이터에 전송하지 않고 :

$http.post('/streamdb/create/',{user:$scope.user.username}) 

내 서버가 다음 일련의 작업을 수행을 DB로부터 특정 id를 검색한다. 나는 클라이언트가 페이지 ('스트림 /'+ ID)로 리디렉션하고 싶은, 그래서 작업 내가 아이디를 통해 보낼 수있는

res.redirect('/streams/'+id) 

으로 종료하도록 :

res.json({id:id}) 

$ 위치 또는 window.open (here 또는 here)과 함께 .success() 절에 응답하지만 약간 낭비가 있습니다. 서버가 이미 나를 어디로 보내야하는지, 왜 추가 전화를해야하는지 ?

서버에서 라우팅이 완료되었음을 알리는 동안 새 페이지는 렌더링되지 않으며 원본 페이지에만 머물러 있습니다.

도움 주셔서 감사합니다.

답변

2

서버 측 코드는 브라우저를 ajax 응답에서 리디렉션 할 수 없습니다. 서버 측에서 리디렉션하는 것이 아약스없이 작동하는 유일한 이유는 실제로 새로운 페이지를 보낼 때마다 리디렉션이 단순히 다른 페이지를 제공한다는 것입니다. Ajax 요청은 응답으로 전체 새 페이지를 제공받지 못하기 때문에 현재 페이지에 붙어 있습니다. '낭비'경로가 필요합니다 :) 응답 본문에서 ID를 반환하고 앞에서 언급 한 각도 $ 위치 서비스를 사용하여 리디렉션하십시오. 일단 약속이 끝나면 약속을 사용하고 리디렉션을 수행하는 것이 좋습니다.

+0

가능한 복제본 http://stackoverflow.com/questions/16629057/handle-an-express-redirect-from-angular-post –