Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
Json 角度http post第一次不工作,但第二次工作_Json_Angular_Http_Typescript_Post - Fatal编程技术网

Json 角度http post第一次不工作,但第二次工作

Json 角度http post第一次不工作,但第二次工作,json,angular,http,typescript,post,Json,Angular,Http,Typescript,Post,尝试我的第一个角度练习。第一次从http post接收未定义的值,但第二次得到正确的响应(Edge,Firefox)。谢谢 LoginService(调用Http post方法并返回observable) LoginFormComponent(调用服务类并将JSON转换为typescript对象) 控制台日志 LoginService.login - userName admin main.bundle.js:370:9 undefined main.bundle.js:266:9 unde

尝试我的第一个角度练习。第一次从http post接收未定义的值,但第二次得到正确的响应(Edge,Firefox)。谢谢

LoginService(调用Http post方法并返回observable)

LoginFormComponent(调用服务类并将JSON转换为typescript对象)

控制台日志

LoginService.login - userName admin  main.bundle.js:370:9
undefined  main.bundle.js:266:9
undefined  main.bundle.js:267:9
Request completed  main.bundle.js:263:181
LoginService.login - userName admin  main.bundle.js:370:9
SUCCESS  main.bundle.js:266:9
VALID USER  main.bundle.js:267:9
Request completed  main.bundle.js:263:181

Angular服务器调用是异步的,这意味着代码在执行其余代码之前不会等待服务器响应。比如PHP。因此,您不会看到等待服务器发送数据的空白页。当您想要处理来自服务器调用的响应时,您必须在
订阅
中添加所有代码;这意味着如果需要将此信息传递给另一个服务。
您的代码应该如下所示

onSubmit(){
this.loginSvc.login(this.loginRequest).subscribe(
数据=>{
this.loginResponseStr=数据
var loginResponse=新的loginResponse();
loginResponse.fillFromJSON(JSON.stringify(data));
console.log(loginResponse.status);
console.log(loginResponse.statusDesc);
如果(loginResponse.status==“成功”){
这个.router.navigate(['/主页']);
}
},
错误=>警报(错误),
()=>console.log('请求已完成')
);

}
角度服务器调用是异步的,这意味着代码在执行其余代码之前不会等待服务器响应。比如PHP。因此,您不会看到等待服务器发送数据的空白页。当您想要处理来自服务器调用的响应时,您必须在
订阅
中添加所有代码;这意味着如果需要将此信息传递给另一个服务。
您的代码应该如下所示

onSubmit(){
this.loginSvc.login(this.loginRequest).subscribe(
数据=>{
this.loginResponseStr=数据
var loginResponse=新的loginResponse();
loginResponse.fillFromJSON(JSON.stringify(data));
console.log(loginResponse.status);
console.log(loginResponse.statusDesc);
如果(loginResponse.status==“成功”){
这个.router.navigate(['/主页']);
}
},
错误=>警报(错误),
()=>console.log('请求已完成')
);

}
Http调用是异步的。您需要将检查响应的代码移动到onNext处理程序中。Http调用是异步的。您需要将检查响应的代码移动到onNext处理程序中。
  onSubmit() {
     this.loginSvc.login(this.loginRequest).subscribe(
       data => this.loginResponseStr = data,
       error => alert(error),
       () => console.log('Request completed')
     );

    var loginResponse = new LoginResponse();
    loginResponse.fillFromJSON(JSON.stringify(this.loginResponseStr));
    console.log(loginResponse.status);
    console.log(loginResponse.statusDesc);

    if(loginResponse.status == "SUCCESS"){
      this.router.navigate(['/home-page']);
}
LoginService.login - userName admin  main.bundle.js:370:9
undefined  main.bundle.js:266:9
undefined  main.bundle.js:267:9
Request completed  main.bundle.js:263:181
LoginService.login - userName admin  main.bundle.js:370:9
SUCCESS  main.bundle.js:266:9
VALID USER  main.bundle.js:267:9
Request completed  main.bundle.js:263:181