You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic+Angular应用中服务的HTTP POST请求未发送问题

问题分析与解决方案

你的问题核心在于Angular的HttpClient返回的是冷Observable——只有对它执行.subscribe()操作时,HTTP请求才会实际发送。你的代码仅返回了处理后的Observable,但没有触发订阅动作,所以请求根本没被执行。

解决步骤

1. 在调用函数的地方添加订阅

这是推荐的做法,组件可以灵活处理响应和错误:

// 示例:在组件中调用服务方法时添加订阅
this.你的服务类实例.marquerDevoirLu(传入的devoirId).subscribe({
  next: (res) => {
    // 处理成功逻辑
  },
  error: (err) => {
    console.error('请求失败:', err);
  }
});

2. (可选)在服务内部订阅(灵活性较差)

如果希望在服务内直接触发请求,可在函数内部完成订阅,但组件无法直接获取响应状态:

marquerDevoirLu(devoir_id){
  console.log(devoir_id);
  let etudiant_id = this.loginService.importantdata['etudiant_id'];
  console.log(etudiant_id);
  let utilisateur_id = this.loginService.importantdata['utilisateur_id'];
  console.log(utilisateur_id);
  console.log(`${this.baseUrl}?func=marquerDevoirLu`)
  
  this.http.post(`${this.baseUrl}?func=marquerDevoirLu`,{etudiant_id, devoir_id, utilisateur_id})
    .pipe(map(user => {
      console.log(user['result']);
      if(user['result'] == 'success'){
        console.log('success');
      } else {
        console.log('echec');
      }
    }))
    .subscribe({
      error: (err) => console.error('请求出错:', err)
    });
} 

额外检查点

  • 确认this.baseUrl和你直接在浏览器中使用的地址完全一致
  • 打开浏览器开发者工具的Network标签,确认是否真的无请求发出(若存在HTTP拦截器,可能会修改或阻止请求)

内容的提问来源于stack exchange,提问作者Abdellatif ENNajy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:15:47