我真的对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);
答案 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,则在成功和拒绝处理程序中使用return
和throw
语句很重要。
$postJSON = file_get_contents("php://input");
$dataArr = json_decode($postJSON, TRUE);
var_dump($dataArr);
在POST请求的正文中找到JSON编码的数据。不发送变量的名称,仅发送内容。
json_decode
函数的第二个参数指定将对象转换为关联数组。
请记住,这些POST请求必须遵守same-origin policy。 XHR请求必须来自与接收POST请求的页面具有相同来源的网站页面。