2013-10-24 18 views
0

我使用的是$ http.post呼叫到我的服務器的承諾,在發送某些用戶數據res.redirect:

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

我的服務器然後執行一系列操作並從數據庫中檢索一個特定的ID。 我想有客戶端重定向到該頁面(「流/」 + id)的,所以我的操作有

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

終止,我可以通過ID發送:

res.json({id:id}) 

然後使用$ location或window.open(如看到herehere)迴應.success()子句,但這似乎有點浪費:服務器已知道向哪裏發送郵件,爲什麼我應該撥打額外的電話?

雖然服務器顯示路由已完成,但新頁面從不呈現,它只停留在原始頁面上。

感謝您的幫助!

回答

2

您的服務器端代碼無法將瀏覽器從ajax響應中重定向。從服務器端重定向不使用ajax的唯一原因是您實際上每次都發送一個新頁面,因此重定向意味着只需提供不同的頁面。 Ajax請求不會作爲響應提供給整個新頁面,因此您被困在當前的頁面上。你需要走'浪費'的路線:)在響應正文中返回id並使用像你提到的角度$ location服務重定向。我建議使用承諾並在解決後執行重定向。

+0

http://stackoverflow.com/questions/16629057/handle-an-express-redirect-from-angular-post重複 –