使用http post subscribe方法无法访问console.log值

时间:2017-11-07 08:45:14

标签: angular ionic-framework ionic2

我只想使用console.log读取控制台内的数组值。

我能够在浏览器中看到响应,甚至`console.log(data)在浏览器中显示了这个结果 -

enter image description here

enter image description here

我的communication.ts代码是 -

import { Component , OnInit } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { commservice } from './commservice';
import {listenToElementOutputs} from "@angular/core/src/view/element";
import { Http,Response,Headers } from '@angular/http';

/**
 * Generated class for the CommunicationPage page.
 *
 * See https://ionicframework.com/docs/components/#navigation for more info on
 * Ionic pages and navigation.
 */

@IonicPage()
@Component({
  selector: 'page-communication',
  templateUrl: 'communication.html',
  providers: [commservice]
})
export class CommunicationPage implements OnInit {
public SNO;dataa;TASK;TAG_DT;TAG_FROM;TAG_TO;TAG;STATUS;ENTRYFROM;ISREAD;
  private _url:string = "http://219.90.67.154/quicktask/webservice /taskcom.php?taskno=";
  constructor(private _http : Http,public _commservice: commservice, public navCtrl: NavController, public navParams: NavParams) {
  }



  ngOnInit()
  {

              this.SNO=this.navParams.get("sno");
              console.log(this.SNO);

    let params;
    var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
   // return this._http.post(this._url+this.SNO,params,{headers:headers})
     // .map((response:Response) => response.json());


      return this._http.post(this._url+this.SNO,params,{headers:headers})
      .subscribe(data =>  {console.log(data);});



  }

}

如果我通过传递网址使用邮递员,我会得到所需的结果,如果一切正常,那么为什么我没有得到.subscribe(data => {console.log(data[0]);});.subscribe(data => {console.log(data[0].TAG);});的结果

  

请帮忙

如果需要,附上邮递员图像以供参考 enter image description here

4 个答案:

答案 0 :(得分:2)

这是因为你首先是控制台登录是整个Response,所以你想要在订阅中控制日志的是JSON

.subscribe(data =>  {console.log(data.json()[0])

请注意json()

答案 1 :(得分:0)

尝试使用Json.stringify 像这样

console.log(JSON.stringify(data));

答案 2 :(得分:0)

这可能有不同的原因:

_url后的/webservice变量中有空格:

private _url:string = "http://219.90.67.154/quicktask/webservice /taskcom.php?taskno=";

但是当我看到它正确时,你的邮递员请求中有空格,所以我不认为这就是原因。

paramsthis.SNO怎么样?它们是在您提出要求时定义的吗?

<强>更新

要从回复中创建对象,您可以使用JSON.parse(data._body)。例如,要获得TAG,您需要使用JSON.parse(data._body)[0].TAG

答案 3 :(得分:0)

使用console.log(data._body);然后您将收到您从帖子中发送的弦乐json对象。您可以使用JSON.parse(data._body)从json字符串中获取对象。