dtutlamjasblef7982
2017-12-05 07:52
浏览 50
已采纳

将数据从angular发布到php api端

Here is my (login.service.ts) code:

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());
    }

And this is my login.ts class

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)
            );
    }

Finally my (login.php) that I expect the error is here

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'];

When I'm trying to (var_dump) the $params I got this:

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

图片转代码服务由CSDN问答提供 功能建议

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

 <  code> private pageURL ='http://localhost/social/src/app/api/ws/react_signup_login/login.php'; 
 user = new UserLogin(); 
 
 login(value:Object):Observable&lt  ;任何&GT;  {
 const body = new URLSearchParams(); 
 Object.keys(value)。forEach(key =&gt; {
 body.set(key,value [key]); 
}); 
 
  let headers = new Headers(); 
 headers.append('Content-Type',
'application / x-www-form-urlencoded'); 
返回this._http.post(this.pageURL,this。  user.toString(),{
 headers:headers 
})。map(res =&gt; res.json()); 
} 
   
 
 

这是我的login.ts类

 导出类UserLogin {
 username:string; 
 password:string; 
 constructor(){
} 
}  
   
 
 

in(login.component.ts)

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

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

  header(“Access  -Control-Allow-Origin:*“); 
header(”Content-type:application / json“); 
 
if($ _SERVER ['REQUEST_METHOD'] =='POST'&amp;&amp; 空($ _ POST))
 $ _POST = json_decode(file_get_contents('php:// input'),true); 
 
 $ params ['username'] = $ _POST ['username']; 
 $  params ['password'] = $ _POST ['password']; 
   
 
 

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

  array(2){
 [“username”] =&gt; 
 NULL 
 [“password”] =&gt; 
 NULL  
} 
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • ds3016 2017-12-05 08:48
    已采纳

    In your POST Http call you should use your defined URLSearchParams as body and not user, because your user object is empty.

    Change your http call code block in login.service.ts from this:

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

    to this:

    return this._http.post(this.pageURL, body.toString(), {
                headers: headers
            }).map(res => res.json());
    
    已采纳该答案
    打赏 评论
  • duan198299 2017-12-05 08:21

    Try to use:

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

    Where value is your user object

    打赏 评论

相关推荐 更多相似问题