1

我正在对我的服务器使用 $http.post 调用并发送一些用户数据:

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

然后我的服务器执行一系列操作并从数据库中检索某个 id。我想让客户端重定向到页面('streams/'+id),所以我让操作以

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

我可以通过 id 发送:

res.json({id:id})

然后用 $location 或 window.open (如这里这里所示)响应 .success() 子句,但这似乎有点浪费:服务器已经知道将我发送到哪里,我为什么还要打一个额外的电话?

当服务器显示路由已完成时,新页面永远不会呈现,它只是停留在原始页面上。

谢谢你的帮助!

4

1 回答 1

2

您的服务器端代码无法从 ajax 响应重定向浏览器。从服务器端重定向在没有 ajax 的情况下工作的唯一原因是您实际上每次都发送一个新页面,因此重定向意味着只是提供不同的页面。Ajax 请求不会得到一个完整的新页面作为响应,因此您会被困在当前页面上。您需要走“浪费”路线:) 在响应正文中返回 id 并使用您提到的角度 $location 服务进行重定向。我建议使用 Promise 并在解决后执行重定向。

于 2013-10-25T09:33:27.927 回答