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

请求carrito_arr数组出现HttpErrorResponse,无法展示商城商品

在线商城购物车请求出现HttpErrorResponse,无法加载商品

我在开发在线商城时遇到问题:当请求获取carrito_arr数组时,浏览器控制台抛出HttpErrorResponse错误,导致商品无法正常列出。问题出在以下代码片段中:

this._clienteService.obtener_cliente_guest(this.id, this.token).subscribe(
      response=>{
          
          this.user = response.data;
          
          localStorage.setItem('user_data', JSON.stringify(this.user));

              //验证对象是否存在
            if(localStorage.getItem('user_data')){
              //存储
              this.user_lc = JSON.parse(localStorage.getItem('user_data')|| '{}');

              console.log(this.user_lc);

              this._clienteService.obtener_carrito_cliente(this.user_lc._id, this.token).subscribe(
                response=>{
                  
                  this.carrito_arr = response.data;
                  this.calcular_carrito();
                }
              );

错误截图:
错误截图


排查与解决建议

  • 先补全错误处理逻辑
    当前订阅没有错误回调,无法定位具体问题。给两个请求的subscribe都加上错误处理:

    // 获取访客用户的请求
    this._clienteService.obtener_cliente_guest(this.id, this.token).subscribe(
      response => {
        // 原有业务逻辑
      },
      error => {
        console.error('获取访客用户失败详情:', error);
      }
    );
    
    // 获取购物车的请求
    this._clienteService.obtener_carrito_cliente(this.user_lc._id, this.token).subscribe(
      response => {
        this.carrito_arr = response.data;
        this.calcular_carrito();
      },
      error => {
        console.error('获取购物车失败详情:', error);
      }
    );
    

    运行后查看控制台的错误详情,比如状态码、响应内容,能直接判断是参数错误、接口不存在还是权限问题。

  • 核对请求参数与接口
    从截图的404错误来看,大概率是接口路径错误:

    1. 检查obtener_carrito_cliente方法里的请求URL是否和后端接口完全一致,注意拼写、路径层级。
    2. 确认this.user_lc._id是否有效:看控制台打印的this.user_lc,是否存在_id字段,会不会是字段名写错(比如id而非_id)。
    3. 验证this.token是否有效:是否过期、格式是否正确,服务端是否要求在请求头携带该token。
  • 重构嵌套订阅(优化建议)
    嵌套订阅会增加代码维护难度,用RxJS的switchMap重构,同时更好地管理订阅生命周期:

    this._clienteService.obtener_cliente_guest(this.id, this.token).pipe(
      switchMap(userRes => {
        this.user = userRes.data;
        localStorage.setItem('user_data', JSON.stringify(this.user));
        this.user_lc = JSON.parse(localStorage.getItem('user_data') || '{}');
        console.log(this.user_lc);
        // 切换到购物车请求
        return this._clienteService.obtener_carrito_cliente(this.user_lc._id, this.token);
      })
    ).subscribe(
      cartRes => {
        this.carrito_arr = cartRes.data;
        this.calcular_carrito();
      },
      err => {
        console.error('请求流程出错:', err);
      }
    );
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:07:07