Angular Http订阅不起作用

时间:2018-03-12 22:31:51

标签: javascript angular subscribe

嗨在我的Angular组件中,我在我的一个方法中有这个代码

this.http.get("http://localhost:8080/poeples")
.map(
    resp => { resp = resp.json(); }
).subscribe(
    (data) => { this.poeples = data; },
    err =>  console.log(err)
);

在chrome dev检查器的网络选项卡中,我看到我的调用返回结果,但data未定义。

为什么?

3 个答案:

答案 0 :(得分:2)

它原来不起作用的原因是因为你有这个:

resp => { resp = resp.json(); }

您没有返回值。使用花括号时,必须显式定义返回值。你所要做的就是:

resp => { return resp.json(); }

或删除大括号:

resp => resp.json() 

答案 1 :(得分:1)

// Your code that isn't working:
/*this.http.get("http://localhost:8080/poeples")
  .map(
    resp => {    
       resp = resp.json()     
    }
  ).subscribe(
      (data) => {
      this.poeples = data;


    },
     err =>  console.log(err)) ;*/
     
// Working code:
@import { map } from 'rxjs/operators';

this.http.get('http://localhost:8080/poeples')
  .pipe(
    // In your example, you are creating a new function with the {} wrapped around this line, but you aren't returning anything, so the return value of the "data" below becomes "undefined."
    map((response) => response.json())
  )
  .subscribe(
    (data) => {
      this.poeples = data;
    },
    (err) => console.log(err)
  );

答案 2 :(得分:0)

错误-订阅请求成功代码不起作用时。 这是我正在处理的代码

this.userService.addDeliverDetails(form.value) 。订阅( res => { this.have = true; }, 错误=> { console.log('错误') } );

尝试错误地console.log(),如果它记录下来,则意味着您的数据来自服务器,其文本格式不是JSON格式。

两个解决方案1)更改角度以接受文本响应 2)将服务器对json的响应更改为不字符串(纯文本)