首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用php API从angular6中的httpClient响应中检索参数值?

使用php API从angular6中的httpClient响应中检索参数值?
EN

Stack Overflow用户
提问于 2018-06-25 04:36:16
回答 1查看 332关注 0票数 0

我在angular中有一个方法,它将值发布到php api,当http post成功时,我得到一个json响应,但当我试图访问res.status或json对象中的任何参数时,我得到的是Property 'status' does not exist on type 'Object'。如何获取response对象中参数的值?

这是我的angular类

代码语言:javascript
复制
export class QuizComponent implements OnInit {

constructor(private http: HttpClient) { }


 myData = { param1: 'This is param 1', param2: 'this is param 2' }


sendmydata(){

  const req = this.http.post('http://myhost.com/phpapi/api.php',this.myData)
  .subscribe(
    res => {
      console.log(res);
     // how can I access res.status here?

      res.status;//this line says Property 'status' does not exist on type 'Object'

    },
    err => {
      console.log("Error occured");
    }
  );
 }

下面是我的PHP:(我知道准备好的语句,这里尽量简单):

代码语言:javascript
复制
 <?php

 header("Access-Control-Allow-Origin: *");
 header("Content-Type: application/json; charset=UTF-8");
 header("Access-Control-Allow-Methods: POST");
 header("Access-Control-Max-Age: 3600");
 header("Access-Control-Allow-Headers: Content-Type, Access-Control- 
 Allow-Headers, Authorization, X-Requested-With");


$db = "dbname";//Your database name
$dbu = "dbuser";//Your database username
$dbp = "dbpass";//Your database users' password
$host = "localhost";//MySQL server - usually localhost


$dblink = mysql_connect($host,$dbu,$dbp);
$seldb = mysql_select_db($db);


$postdata = file_get_contents("php://input");
$request = json_decode($postdata);

$item1 = $request->param1;
$item2 = $request->param;

$sql = mysql_query("INSERT INTO `$db`.`table` (`id`,`item1`,`item2`) 
VALUES ('','$item1','$item2');");

 if($sql){

    if (strcmp($item1, "") != 0) {
        echo '{"status":"ok"}';
      }

 }else{
    echo '{"status":"error"}';

 }

mysql_close($dblink);//Close off the MySQL connection to save resources.
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-25 04:45:22

假设您已经为响应定义了一个接口:

代码语言:javascript
复制
interface Response {
  status: string;
}

将类型信息添加到post调用中:

代码语言:javascript
复制
this.http.post<Response>('http://myhost.com/phpapi/api.php',this.myData)

如果没有可用的类型定义,则返回

代码语言:javascript
复制
this.http.post<any>('http://myhost.com/phpapi/api.php',this.myData)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51013735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档