【问题标题】:Unble to Extract the _body response in angular 4 in JSON format无法以 JSON 格式提取角度 4 的正文响应
【发布时间】:2018-01-05 12:53:29
【问题描述】:

我正在为我的应用程序使用 Angular 4.2.6。我有这样的服务

checkStaff(email: any) {

  return this._http.post(this.url + "/Impsapi/getStaff", JSON.stringify(email)).map(
    (resp) => resp
  )

}

checkStaff(电子邮件:任何){ 返回 this._http.post(this.url+"/Impsapi/getStaff",JSON.stringify(email)).map( (响应)=> 响应 )

}

this.loginServ.checkStaff(this.user)
  .subscribe(
    userData => {
      this._return = userData;
      console.log(this._return);
    }
  );

服务器返回 JSON 作为响应。但是当我记录输出时,我得到以下 logged response

请我使用响应正文中的数据。我无法将 ._body 转换为正确的 json 并用于应用程序。请帮忙

【问题讨论】:

    标签: json angular angular4-httpclient


    【解决方案1】:

    响应数据为JSON字符串形式。应用程序必须通过调用 res.json() 将该字符串解析为 JavaScript 对象。

    return this._http.post(this.url + "/Impsapi/getStaff", JSON.stringify(email)).map(
        (resp) => resp.json()
      )
    

    更新 试试下面的代码 sn-p

    checkStaff(email: any) {
        return this._http.post(this.url + "/Impsapi/getStaff", JSON.stringify(email))
        .map(res => {return res.json()})
    
    
      }
    

    【讨论】:

    • 我已经多次这样做了,但我得到“错误语法错误:JSON.parse () 位置 0 处的 JSON 中的意外标记”
    • @valentine 你得到了什么?
    • @valentine 然后试试.text()
    • 我也试过了。它只返回身体很好,但作为字符串。而 JSON.parse 对它不起作用
    • 如果你不能应用 JSON.parse() 这意味着你的服务没有返回正确的 json 响应
    【解决方案2】:

    试试这个:

    this.loginServ.checkStaff(this.user)
      .subscribe(
        userData => {
          this._return = userData.json();
          console.log(this._return);
        }
      );
    

    我的意思是你的 checkStaff:

    checkStaff(email: any): Observable<Response> {
    
      return this._http.post(this.url + "/Impsapi/getStaff", JSON.stringify(email));
    
    }
    
    
    export classMyResp
    {
    id: string;
     /*so on...*/
    }
    

    如果有的话,这会给你响应的正文。

    【讨论】:

    • 您的代码中也不需要 '.map( (resp)=> resp )'。只需确保您在 checkStaff 方法中返回 Observable
    • ERROR SyntaxError: JSON.parse () 位置 0 处的 JSON 中的意外标记
    • 我删除了地图并添加了 .text()。我得到 [{"id":"3","staffName":"Chucks Akinudo","email":"chucka.akinudo@","role":"admin","department":"admin","staffid ":"G040"}]。作为回应。我如何将其转换为 JSON。或者我如何访问这些值
    • 那么它即将到来的响应有问题。
    • 好吧,你的 this._return 应该映射到你的 JSON 响应。创建一个您的响应类型的对象,一切顺利
    【解决方案3】:

    我的问题解决了。我的 PHP 托管在 wampserver 上。在某种程度上,当我调用服务器时,总是返回无效的 JSON。我不得不使用ob_clean() 函数,一切都很好。

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多