Javascript 角度Http订阅不工作
嗨,在我的角度分量中,我的一个方法中有这个代码Javascript 角度Http订阅不工作,javascript,angular,subscribe,Javascript,Angular,Subscribe,嗨,在我的角度分量中,我的一个方法中有这个代码 this.http.get("http://localhost:8080/poeples") .map( resp => { resp = resp.json(); } ).subscribe( (data) => { this.poeples = data; }, err => console.log(err) ); 在chrome dev inspector的网络选项卡中,我看到了我的get调用返回
this.http.get("http://localhost:8080/poeples")
.map(
resp => { resp = resp.json(); }
).subscribe(
(data) => { this.poeples = data; },
err => console.log(err)
);
在chrome dev inspector的网络选项卡中,我看到了我的get调用返回结果,但数据未定义
为什么?
//您的代码不起作用:
/*这是http.get(“http://localhost:8080/poeples")
.地图(
resp=>{
resp=resp.json()
}
).订阅(
(数据)=>{
this.poeples=数据;
},
err=>console.log(err))*/
//工作代码:
@从“rxjs/operators”导入{map};
this.http.get('http://localhost:8080/poeples')
.烟斗(
//在您的示例中,您正在创建一个新函数,其中{}环绕这一行,但您没有返回任何内容,因此下面“data”的返回值变为“undefined”
map((response)=>response.json())
)
.订阅(
(数据)=>{
this.poeples=数据;
},
(err)=>console.log(err)
);代码>它最初不起作用的原因是因为您有:
resp => { resp = resp.json(); }
您没有返回值。使用大括号时,必须显式定义返回值。你所要做的就是:
resp => { return resp.json(); }
或移除支架:
resp => resp.json()
错误-订阅请求成功代码不工作时。
这是我正在编写的代码
this.userService.addDeliverDetails(form.value)
.订阅(
res=>{
这是真的;
},
错误=>{
console.log('错误')
}
);
尝试在错误中console.log(),如果它被记录,则表示您的数据来自服务器,为文本,而不是JSON格式
两种解决方案1)改变角度以接受文本响应
2) 由于异步性,将服务器对json的响应更改为字符串(纯文本)。您能解释一下我的代码中出现了什么问题吗?@shmoolki=>如果您查看.pipe()
方法下的注释,它会解释代码中的问题。我发布了一个轻微修改的唯一原因是,您在问题中使用的.map()
方法在RxJS 5+中被弃用。谢谢这是非常有用的回答,我+5您也可以这样做!