【问题标题】:Using $http.post and res.redirect without resolving the promise在不解决承诺的情况下使用 $http.post 和 res.redirect
【发布时间】: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(如 herehere 所示)响应 .success() 子句,但这似乎有点浪费:服务器已经知道将我发送到哪里,我为什么要打额外的电话?

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

感谢您的帮助!

【问题讨论】:

    标签: javascript node.js angularjs express response.redirect


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2016-06-16
    • 2020-07-05
    • 1970-01-01
    相关资源
    最近更新 更多