使用Angular 5将POST数据发送到PHP

时间:2018-07-17 13:24:34

标签: php angular rest web-services angular5

我正在尝试从角度5到PHP调用Web服务。

我正在使用POST方法,但是在PHP端检索数据时遇到了麻烦。

发送数据显示在有效负载中,但未在php端检索。

Angular service.ts

this.URL = "http://localhost/angular/WEBSERVICE_PHP/test.php";

const headers = new Headers();
headers.append('Content-Type', 'application/json');
let data = 'visitor_id=55';

return this.http
.post(this.URL,JSON.stringify(data),{
    headers: headers
})
.map( Response => console.log(Response) );

PHP页面

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: POST, GET");
header('P3P: CP="CAO PSA OUR"'); // Makes IE to support cookies
header('content-type: text/plain');  
header("content-type: application/x-www-form-urlencoded");
header("Access-Control-Allow-Headers: Content-Type, Authorization, X- 
Requested-With");
header("Access-Control-Max-Age: 172800");

if(isset($_POST))
{
    // $post = 'test data';     // This data get sent
    //   return $post;
    echo $post = $_POST['visitor_id'];
    return $post; 
}

1 个答案:

答案 0 :(得分:1)

“发布” JSON时,您不会看到$_POST

相反,这样做:

$json = file_get_contents('php://input');
$array = json_decode($json, true);

如果必须为$_POST,则可以将$array分配给$_POST

另一种解决方案是从Angular端发送正确的帖子,而不是发送JSON字符串! (我不是Angular男人,也许有人可以发表评论,然后我添加代码!)