Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度Http订阅不工作_Javascript_Angular_Subscribe - Fatal编程技术网

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您也可以这样做!