在不解决承诺的情况下使用 $http.post 和 res.redirect
Posted
技术标签:
【中文标题】在不解决承诺的情况下使用 $http.post 和 res.redirect【英文标题】:Using $http.post and res.redirect without resolving the promise 【发布时间】:2013-11-03 20:35:07 【问题描述】:我正在使用 $http.post 调用我的服务器并发送一些用户数据:
$http.post('/streamdb/create/',user:$scope.user.username)
然后我的服务器执行一系列操作并从数据库中检索某个 id。 我想让客户端重定向到页面('streams/'+id),所以我让操作以a终止
res.redirect('/streams/'+id)
我可以通过 id 发送:
res.json(id:id)
然后使用 $location 或 window.open(如 here 或 here 所示)响应 .success() 子句,但这似乎有点浪费:服务器已经知道将我发送到哪里,我为什么要打额外的电话?
虽然服务器显示路由已完成,但新页面永远不会呈现,它只是停留在原始页面上。
感谢您的帮助!
【问题讨论】:
【参考方案1】:您的服务器端代码无法从 ajax 响应重定向浏览器。从服务器端重定向在没有 ajax 的情况下工作的唯一原因是您实际上每次都发送一个新页面,因此重定向意味着只是提供不同的页面。 Ajax 请求不会得到一个完整的新页面作为响应,因此您会被困在当前页面上。您需要走“浪费”路线:) 在响应正文中返回 id 并使用您提到的角度 $location 服务进行重定向。我建议使用 Promise 并在解决后执行重定向。
【讨论】:
***.com/questions/16629057/… 的可能重复项以上是关于在不解决承诺的情况下使用 $http.post 和 res.redirect的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在不重新启动调试器的情况下评估nodejs中的promise?
如何在不使用离子的this.navCtrl.push(PostPage,data)的情况下将数据传递到另一个页面
如何在不使用异常的情况下解决 ValueError dtype