Angular Http 订阅不工作
Angular Http Subscribe not working
您好,在我的 Angular 组件中,我的一个方法中有这段代码
this.http.get("http://localhost:8080/poeples")
.map(
resp => { resp = resp.json(); }
).subscribe(
(data) => { this.poeples = data; },
err => console.log(err)
);
在 chrome 开发检查员的网络选项卡中,我看到我的 get 调用返回结果,但是 data
未定义。
为什么?
// 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)
);
它最初不起作用的原因是因为你有这个:
resp => { resp = resp.json(); }
您没有return输入值。当您使用大括号时,您必须显式定义一个 return 值。您所要做的就是:
resp => { return resp.json(); }
或者去掉大括号:
resp => resp.json()
错误 - 订阅请求成功代码无效。
这是我正在处理的代码
this.userService.addDeliverDetails(form.value)
.subscribe(
res=>{
this.have=true;
},
error=>{
console.log('error')
}
);
尝试 console.log() 时出现错误,如果它被记录下来,则意味着您的数据来自服务器的文本格式未 JSON。
两种解决方案 1) 更改 angular 以接受文本回复
2) 将服务器响应更改为 json 而不是字符串(纯文本)
您好,在我的 Angular 组件中,我的一个方法中有这段代码
this.http.get("http://localhost:8080/poeples")
.map(
resp => { resp = resp.json(); }
).subscribe(
(data) => { this.poeples = data; },
err => console.log(err)
);
在 chrome 开发检查员的网络选项卡中,我看到我的 get 调用返回结果,但是 data
未定义。
为什么?
// 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)
);
它最初不起作用的原因是因为你有这个:
resp => { resp = resp.json(); }
您没有return输入值。当您使用大括号时,您必须显式定义一个 return 值。您所要做的就是:
resp => { return resp.json(); }
或者去掉大括号:
resp => resp.json()
错误 - 订阅请求成功代码无效。 这是我正在处理的代码
this.userService.addDeliverDetails(form.value) .subscribe( res=>{ this.have=true; }, error=>{ console.log('error') } );
尝试 console.log() 时出现错误,如果它被记录下来,则意味着您的数据来自服务器的文本格式未 JSON。
两种解决方案 1) 更改 angular 以接受文本回复 2) 将服务器响应更改为 json 而不是字符串(纯文本)