Angular的$ http.post到PHP空$ _POST

时间:2016-11-22 14:47:03

标签: php angularjs

我有以下场景,我有一个名为contact的Angular变量,它是一个JSON对象,具有以下成员:

  • 消息
  • 名称
  • 电话
  • 电子邮件

console.log(contact)并记录正确的信息,但是一旦发送,$_POST['contact']会产生一个空数组。我正在四处阅读,发现$_POST['contact']不会像jQuery的http请求那样填充。所以我把它修改为以下内容:

$params = json_decode(file_get_contents('php://input'),true);
print_r($params);

这是Angular函数:

$scope.submitForm = function(contact){
        console.log(contact);
        $scope.clearContactFormData();
        return $http.post('http://localhost/cpr_courses/app/methods/contact.php', contact).success(function(data){
            Materialize.toast(data, 4000);
        });
    }

print_r($params)仍为空。我不知道还有什么事情发生。有什么帮助吗?

修改

console.log()输出以下内容:

Array[0]
email
:
"asd@asd.asd"
length
:
0
message
:
"rubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOB"
name
:
"rubAWREIUVBAERWOBNATEIOB"
phone
:
"13345678"

这是网络标签图片:

response headers

这是JSON对象的声明:

$scope.contact = {};
$scope.onlyNumbers = /^[0-9]+$/;

稍后会在以下表格中加上:

<form method="post" class="form-sl" role="form" name="contactForm" ng-submit="submitForm(contact)" novalidate enctype="multipart/form-data">

以及稍后,在每个字段上都这样:

<input type="email" name="email" id="email" ng-model="contact.email" autocomplete="off" ng-maxlength="50" length="50" required/>

可以吗?

1 个答案:

答案 0 :(得分:2)

The $_POST superglobal是一种PHP商品,可以自动解码HTML表单发送的典型POST请求的正文。换句话说,它期望Content-Type请求标头中的其中一个值:

  • application/x-www-form-urlencoded
  • multipart/form-data

由于您有application/json,因此它仍为空。