如何从Angular 2中的php文件中获取数据

时间:2017-05-01 08:52:17

标签: angular angular-http

我的.php文件包含内容:

test.php的

<?php
    echo 'a';

这是我的Angular 2组件。

app.component.ts

import {Component, AfterViewInit, Input, Output, EventEmitter,
     ElementRef, ChangeDetectorRef, Injectable } from '@angular/core';
import {Http, Headers, Response, Jsonp} from '@angular/http';

import {JsonData} from './json-data';
import {Observable} from 'rxjs/Rx';
import 'rxjs/Rx';
import 'rxjs/add/operator/map';

@Component({
    moduleId: module.id,
    selector: 'my-app',
    templateUrl: 'app.component.html',
})
export class AppComponent {
    public data: any;

    public constructor(private http: Http, public element: ElementRef, 
                    private cdRef: ChangeDetectorRef) {
        this.element = this.element.nativeElement;
    }

    public getData() {
           this.http.get('http://localhost:3000/test.php').map((response: Response) => response.json())
            .subscribe(result => this.data = result);
            console.dir(this.data);
    }

    ngOnInit() {
         this.getData();
    }
}

我想收到&#39; a&#39;作为回应,但我的回复包含php文件中的所有内容:

<?php
     echo 'a';

我能否只得到一个&#39; ?

1 个答案:

答案 0 :(得分:0)

首先: Http调用是Angular2中的异步。

因此,拨打电话后您无法console.dir(this.data);。您需要等待数据从服务器返回。

如果要记录您需要更改订阅的数据。对于多行代码,您可以在“this.data = result”周围添加大括号:

this.http.get('http://localhost:3000/test.php').map((response: Response) => response.json())
    .subscribe(result => {
        this.data = result;
        console.dir(this.data);
    );

第二:如果您的回复返回php文件中的所有内容(“<?php echo 'a';”),那么您的php服务器没有运行..您是否安装了wamp服务器? (假设你在窗户上。)

希望这会对你有所帮助。