javascript - 在不解决 promise 的情况下使用 $http.post 和 res.redirect

标签 javascript node.js angularjs express response.redirect

我正在使用 $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() 子句(如 herehere 所示)但这似乎有点浪费:服务器已经知道将我发送到哪里,我为什么要多打一个电话?

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

感谢您的帮助!

最佳答案

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

关于javascript - 在不解决 promise 的情况下使用 $http.post 和 res.redirect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577745/

相关文章:

javascript - Selectize 上的 jQuery 工具提示

node.js - Nodejs 配置中的 MSAL 此错误意味着什么?

javascript - 我如何在 Sequelize 中找到一小时外的值

angularjs - maxlength 不适用于输入类型 ="number" ionic

javascript - 为什么我在加载具有 Material 的 GLTF 模型时得到黑色模型?

php - 尝试创建一个 Javascript 警报窗口,单击“确定”后不会重新加载页面

javascript - Yeoman-Angular 生成的应用程序中缺少 Angular 脚本

javascript - 寻找正则表达式以匹配 ng-pattern 中的特定十进制格式

javascript - 如何将 Luxon 时区选项与 chart.js 合并?

node.js - 在 azure blob 容器之间复制文件