如何在 Angular 中不返回数据的 http.post 请求上使用“toPromise()”?

2023-12-20

我最近开始学习 Angular (4),并遵循 Angular.io 的教程。

但现在我正在尝试构建自己的应用程序,但遇到了一些问题。我花了一整天的时间试图解决这个问题,但我失败了。

我正在开发一个目前只有登录和注销功能的身份验证服务。

The login工作正常,但我不明白logout上班。似乎打破了toPromise() call.

const url = `${environment.serviceURL}/api/account/logout`;
const headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded',
    'withCredentials':true,
    'Authorization': `Bearer ${this.token}`});
let options = new RequestOptions({headers: headers});
let result = this.http.post(
     url, options).toPromise().then(/*do something*/);

这在控制台中给出了以下错误:

ERROR Error: Uncaught (in promise): TypeError: v.split is not a function
TypeError: v.split is not a function at http://localhost:4200/vendor.bundle.js:26382:76
at Array.forEach (native)
at http://localhost:4200/vendor.bundle.js:26382:20
at Map.forEach (native)
at Headers.toJSON (http://localhost:4200/vendor.bundle.js:26380:23)
at Object.stringify (<anonymous>)
at Request.Body.text (http://localhost:4200/vendor.bundle.js:26957:25)
at Request.getBody (http://localhost:4200/vendor.bundle.js:27865:29)
at Observable._subscribe (http://localhost:4200/vendor.bundle.js:27393:37)
at Observable._trySubscribe (http://localhost:4200/vendor.bundle.js:567:25)
at http://localhost:4200/vendor.bundle.js:26382:76
at Array.forEach (native)
at http://localhost:4200/vendor.bundle.js:26382:20
at Map.forEach (native)
at Headers.toJSON (http://localhost:4200/vendor.bundle.js:26380:23)
at Object.stringify (<anonymous>)
at Request.Body.text (http://localhost:4200/vendor.bundle.js:26957:25)
at Request.getBody (http://localhost:4200/vendor.bundle.js:27865:29)
at Observable._subscribe (http://localhost:4200/vendor.bundle.js:27393:37)
at Observable._trySubscribe (http://localhost:4200/vendor.bundle.js:567:25)
at resolvePromise (http://localhost:4200/polyfills.bundle.js:3224:31)
at http://localhost:4200/polyfills.bundle.js:3150:17
at SafeSubscriber._error (http://localhost:4200/vendor.bundle.js:66387:85)
at SafeSubscriber.__tryOrSetError (http://localhost:4200/vendor.bundle.js:16367:16)
at SafeSubscriber.error (http://localhost:4200/vendor.bundle.js:16321:26)
at Subscriber._error (http://localhost:4200/vendor.bundle.js:16248:26)
at Subscriber.error (http://localhost:4200/vendor.bundle.js:16222:18)
at Observable._trySubscribe (http://localhost:4200/vendor.bundle.js:572:18)
at Observable.subscribe (http://localhost:4200/vendor.bundle.js:555:27)
at http://localhost:4200/vendor.bundle.js:66387:15

市长的区别在于(至少我认为)login返回包含用户信息和logout不返回任何数据。它只是删除服务中的会话。

我只是想知道请求是否成功,以便我可以采取行动。 我做错了什么或者我应该采取什么不同的措施才能使其正常工作?


这与toPromise()正如@Bunyamin Coskuner 和@BeetleJuice 在评论中指出的那样。 我发现我在拨打电话时犯了一个错误http.post没有 body 参数的方法导致函数采用options作为身体。

改变:

let result = this.http.post(
 url, options).toPromise().then(/*do something*/);

to:

let result = this.http.post(
 url, null, options).toPromise().then(/*do something*/);

解决了我的错误!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Angular 中不返回数据的 http.post 请求上使用“toPromise()”? 的相关文章

随机推荐

  • 在url中使用下划线连接组合键是好还是坏设计?

    我正在为以下用例寻找 RESTful API 设计的最佳实践 Table1 Table2 Id1 Id1 Id2 Id2 Id3 Id3 Name Name Table1Id1 FK to Table1 Table1Id1 FK to Ta
  • 使用 pandas reindex 和 float:插值

    你能解释一下这种奇怪的行为吗 df pd DataFrame year 1986 1987 1988 bomb arange 3 set index year In 9 df reindex arange 1986 1988 125 125
  • 在mongo查询中将iso日期转换为时间戳

    这是查询 project formattedDate dateToString format Y m d date ceatedAt createdAtMonth month ceatedAt rating 1 group id forma
  • Nodejs无法连接到云shell上的mongodb

    我的 MongoDB 服务器托管在 google cloud VM 上 我希望创建 App Engine 微服务 测试连接性 我的 server js 看起来像 const MongoClient require mongodb Mongo
  • 如何使用 Spark 查找 10 亿条记录的最近邻居?

    给定 10 亿条记录 其中包含以下信息 ID x1 x2 x3 x100 1 0 1 0 12 1 3 2 00 2 1 1 2 2 3 对于上面的每个 ID 我想根据向量的欧几里德距离 x1 x2 x100 找到前 10 个最接近的 ID
  • 在 JavaScript 中重复某个字符串多次

    在 Perl 中 我可以使用以下语法多次重复一个字符 a a x 10 results in aaaaaaaaaa 有没有一种简单的方法可以在 Javascript 中实现这一点 显然我可以使用一个函数 但我想知道是否有任何内置方法或其他一
  • 自动输入 Python 提示

    我正在尝试编写一个 python 脚本 它将为我执行 bash 命令行程序 该程序要求用户输入两次 我希望我的脚本每次都自动输入 1 我听说过这样的事情 os system program lt prepared input 如何编写pre
  • q-learning计算中的大量状态

    我通过 q learning 实现了一款 3x3 OX 游戏 它在 AI vs AI 和 AI vs Human 中完美运行 但我无法更进一步地进行 4x4 OX 游戏 因为它会耗尽我所有的 PC 内存并崩溃 这是我当前的问题 大数组中的访
  • 根据优先级映射数据框列

    我有一个主数据框 main df 例如 A B X Y Id1 0 cat cat1 catabc 0 1 uuid01 1 cat cat1 catxyz 0 4 uuid02 2 cat cat2 catpqr 0 5 uuid01 3
  • Javascript - 按日期然后按时间对对象数组进行排序

    我有以下数组 id 1 value value1 date 2018 08 08 time 15 27 17 id 2 value value2 date 2018 08 09 time 12 27 17 id 3 value value3
  • 在 R 中创建水平条形图以显示活动序列

    数据集 患者 是患者访问诊所并接受治疗的事件日志 下面的脚本提供了一个数据帧 其中包含事件日志中的跟踪或活动序列 trace id 以及特定跟踪之后的案例的绝对频率 我希望使用创建动态水平条形图ggplot2 or plotly这样 迹线的
  • JPA和独特的领域

    我的应用程序中有两个持久性对象 事物和附加到事物的标签 该应用程序可以生成带有附加标签的事物集合 标签对象具有唯一的名称 使用相同标签两次标记某物是没有意义的 插入事物 附加标签对象 时 其中一些具有相同名称的标签对象可能已存在于数据库中
  • 是否可以声明具有无限上限的 Ada 范围?

    我想在 Ada 中声明记录类型的速度范围 下面的方法行不通 但是有没有办法让它工作呢 Speed in knots range 0 to unlimited Speed float Range 0 0 unlimited 我只想要这个数字的
  • 如何从加密字符串中提取加密方法生成的IV向量

    我在提取使用 生成的 IV 时遇到问题encrypt方法来自encrypted strings我提供的特定密码库 从文档中 我看到此方法使用 C 库根据密码生成密钥和 iv 该 C 库调用与 openssl 相同的方法来生成密钥和 iv E
  • AWS ElasticBeanstalk .ebextensions 未执行

    我正在尝试在 AWS EB 上部署后完成一些事情 我已经添加了我的 ebextensions到 git 存储库 我只有一个文件01 container commands config 当我跟踪时它似乎没有运行 var log eb acti
  • Google Firestore - 构建深度嵌套的有序数据

    我正在尝试弄清楚如何使用 Cloud Firestore 构建我的锻炼应用程序的数据 数据模型如下 该应用程序有很多组练习 每组练习都有一个有序的练习列表 每个练习都有一个练习部分的有序列表 每个练习部分都有一个有序的说明列表 每条指令都有
  • 为什么要池化无状态会话 Bean?

    Java 中的无状态 bean 不会在客户端的两次调用之间保留其状态 简而言之 我们可以将它们视为具有业务方法的对象 每个方法都接受参数并返回结果 调用该方法时 会在执行堆栈中创建一些局部变量 当该方法返回时 局部变量将从堆栈中删除 并且如
  • 正则表达式匹配特定位置的字符

    我需要想出一个正则表达式来仅查找给定文本位置 9 上的字母 A F 或 E 我对正则表达式非常陌生 做了一些搜索 但找不到任何类似的响应 到目前为止我所拥有的是 9 A 该命令似乎可以在空格九上找到字母 A 但如何将其他 2 个字母添加到正
  • 使用 ImageSharp 将 Image 转换为 Byte[]

    如何使用 ImageSharp 库将图像转换为字节数组 ImageSharp 库还可以建议 提供基于 EXIF 方向的 RotateMode 和 FlipMode 吗 如果您想将原始像素转换为byte 您执行以下操作 var bytes i
  • 如何在 Angular 中不返回数据的 http.post 请求上使用“toPromise()”?

    我最近开始学习 Angular 4 并遵循 Angular io 的教程 但现在我正在尝试构建自己的应用程序 但遇到了一些问题 我花了一整天的时间试图解决这个问题 但我失败了 我正在开发一个目前只有登录和注销功能的身份验证服务 The lo