将数据从angular发布到php api端

时间:2017-12-05 07:52:45

标签: php angular angular-forms

这是我的(login.service.ts)代码:

private pageURL = 'http://localhost/social/src/app/api/ws/react_signup_login/login.php';
    user = new UserLogin();

    login(value: Object): Observable<any> {
        const body = new URLSearchParams();
        Object.keys(value).forEach(key => {
            body.set(key, value[key]);
        });

        let headers = new Headers();
        headers.append('Content-Type',
            'application/x-www-form-urlencoded');
        return this._http.post(this.pageURL, this.user.toString(), {
            headers: headers
        }).map(res => res.json());
    }

这是我的login.ts类

export class UserLogin {
    username: string;
    password: string;
    constructor() {
    }
}

in(login.component.ts)

user = new UserLogin();
login(value) {
        this._loginService.login({value})
            .subscribe(
                response => this.user = response,
                error => console.log(error)
            );
    }

最后我希望错误的我的(login.php)在这里

header("Access-Control-Allow-Origin: *");
header("Content-type:application/json");

if ($_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST))
    $_POST = json_decode(file_get_contents('php://input'), true);

$params['username'] = $_POST['username'];
$params['password'] = $_POST['password'];

当我尝试(var_dump)$params时,我得到了这个:

array(2) {
  ["username"]=>
  NULL
  ["password"]=>
  NULL
}

2 个答案:

答案 0 :(得分:1)

在你的POST Http调用中,你应该使用你定义的URLSearchParams作为正文而不是用户,因为你的用户对象是空的。

login.service.ts更改您的http呼叫代码块:

return this._http.post(this.pageURL, this.user.toString(), {
            headers: headers
        }).map(res => res.json());

到此:

return this._http.post(this.pageURL, body.toString(), {
            headers: headers
        }).map(res => res.json());

答案 1 :(得分:-1)

尝试使用:

return this._http.post(this.pageURL, value, {
        headers: headers
    }).map(res => res.json());

值是您的用户对象