角度';s$http.post到PHP空$\u post

角度';s$http.post到PHP空$\u post,php,angularjs,Php,Angularjs,我有以下场景,我有一个称为contact的角度变量,它是一个JSON对象,具有以下成员: 信息 名字 电话 电子邮件 Iconsole.log(contact)并记录正确的信息,但是一旦发送,$\u POST['contact']将导致一个空数组。我四处阅读,发现$\u POST['contact']不会像来自jQuery的http请求那样被填充。因此,我将其固定为以下内容: $params = json_decode(file_get_contents('php://input'),tru

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

  • 信息
  • 名字
  • 电话
  • 电子邮件
I
console.log(contact)
并记录正确的信息,但是一旦发送,
$\u POST['contact']
将导致一个空数组。我四处阅读,发现
$\u POST['contact']
不会像来自jQuery的http请求那样被填充。因此,我将其固定为以下内容:

$params = json_decode(file_get_contents('php://input'),true);
print_r($params);
Array[0]
email
:
"asd@asd.asd"
length
:
0
message
:
"rubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOB"
name
:
"rubAWREIUVBAERWOBNATEIOB"
phone
:
"13345678"
这是角函数:

$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);
        });
    }
仍然
打印($params)
为空。我不知道还发生了什么。需要帮忙吗

编辑

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

$params = json_decode(file_get_contents('php://input'),true);
print_r($params);
Array[0]
email
:
"asd@asd.asd"
length
:
0
message
:
"rubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOBrubAWREIUVBAERWOBNATEIOB"
name
:
"rubAWREIUVBAERWOBNATEIOB"
phone
:
"13345678"
这是网络选项卡图像:

以下是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/>

后来,在每个领域,像这样:

<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/>

可以吗?

是一种PHP商品,用于自动解码HTML表单发送的典型POST请求的正文。换句话说,它在
内容类型
请求头中需要以下值之一:

  • application/x-www-form-urlencoded
  • 多部分/表单数据
因为您有
application/json
,所以它仍然是空的。

是一种PHP商品,可以自动解码HTML表单发送的典型POST请求的正文。换句话说,它在
内容类型
请求头中需要以下值之一:

  • application/x-www-form-urlencoded
  • 多部分/表单数据

因为您有
application/json
,所以它仍然是空的。

查看浏览器的网络检查器实际的原始HTTP请求是什么。它与jQuery或Angular无关,PHP不知道或不关心是谁发送了请求。重要的是请求的格式以及PHP如何处理不同的格式。console.log(contact)的输出看起来如何?检查浏览器在“网络”选项卡中发送的内容,并验证它是您认为的内容,并且是有效的json。一旦您验证了这一点,echo
file\u get\u contents('php://input“)
在php中(不带json_解码)并查看php得到了什么。@codeninja我不完全确定,但是,您能展示一下您是如何编写联系人对象的以及它的外观吗?因为我不确定,但它看起来不像是有效的JSON,你能验证一下你是用
{}
而不是用
[]
创建它的吗。。。这个日志看起来很奇怪,内容长度:请求头中的2表示浏览器正在向服务器发送[](2字节)——可能是因为您的
contact
变量是一个键控数组。给定数组的长度为0,Angular可能不会费心检查其中是否有任何数据。将您的
联系人
变量设置为对象,而不是查看浏览器的网络检查器实际原始HTTP请求是什么。它与jQuery或Angular无关,PHP不知道或不关心是谁发送了请求。重要的是请求的格式以及PHP如何处理不同的格式。console.log(contact)的输出看起来如何?检查浏览器在“网络”选项卡中发送的内容,并验证它是您认为的内容,并且是有效的json。一旦您验证了这一点,echo
file\u get\u contents('php://input“)
在php中(不带json_解码)并查看php得到了什么。@codeninja我不完全确定,但是,您能展示一下您是如何编写联系人对象的以及它的外观吗?因为我不确定,但它看起来不像是有效的JSON,你能验证一下你是用
{}
而不是用
[]
创建它的吗。。。这个日志看起来很奇怪,内容长度:请求头中的2表示浏览器正在向服务器发送[](2字节)——可能是因为您的
contact
变量是一个键控数组。给定数组的长度为0,Angular可能不会费心检查其中是否有任何数据。将您的
联系人
变量改为对象如何解决此问题?@codennija您需要使客户端和服务器数据格式匹配。我不知道您需要哪一个,如果这是一个角度问题,这不是我的专业领域。我如何解决这个问题?@codennija您需要使客户端和服务器数据格式匹配。我不知道你需要哪一个,如果这是一个角度问题,这不是我的专业领域。