将数据从Angularjs传递到PHP

时间:2019-05-18 09:12:26

标签: javascript php angularjs

我真的对Angular陌生。我正在尝试将变量传递给php,但响应为“注意:试图获取非对象的属性”,并且该数组为null。

js文件:

var myData = {
            fruit1: 'apple',
            fruit2: 'banana'
        };


$http({
    url: "test.php",
        method: "POST",
        headers : { 'Content-Type': 'application/json' },
        data: myData
    }).success(function(data, status, headers, config) {
        $scope.data = data;
    }).error(function(data, status, headers, config) {
        $scope.status = status;
});

php文件:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$data = $request->myData;

var_dump($data);

1 个答案:

答案 0 :(得分:0)

来自AngularJS框架的.success.error方法have been removed。而是使用.then.catch方法:

var myData = {
    fruit1: 'apple',
    fruit2: 'banana'
};

$http({
    url: "test.php",
    method: "POST",
    ̶h̶e̶a̶d̶e̶r̶s̶ ̶:̶ ̶{̶ ̶'̶C̶o̶n̶t̶e̶n̶t̶-̶T̶y̶p̶e̶'̶:̶ ̶'̶a̶p̶p̶l̶i̶c̶a̶t̶i̶o̶n̶/̶j̶s̶o̶n̶'̶ ̶}̶,̶
    data: myData
}).then(function(response) {
    $scope.data = response.data;
    return response.data;
}).catch(function(err) {
    $scope.status = err.status;
    throw err;
});

$ http服务自动对数据进行JSON编码并自动将内容类型设置为application/json

在这种情况下,代码不使用.then.catch方法返回的承诺。如果使用了Promise,则在成功和拒绝处理程序中使用returnthrow语句很重要。

php文件:

$postJSON = file_get_contents("php://input");
$dataArr = json_decode($postJSON, TRUE);

var_dump($dataArr);

在POST请求的正文中找到JSON编码的数据。不发送变量的名称,仅发送内容。

json_decode函数的第二个参数指定将对象转换为关联数组。

请记住,这些POST请求必须遵守same-origin policy。 XHR请求必须来自与接收POST请求的页面具有相同来源的网站页面。