Я действительно новичок в 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);
Возможный дубликат Угловой HTTP-пост в PHP и undefined



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Методы .success и .errorбыл удален из фреймворка AngularJS. Вместо этого используйте методы .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. Если используется промис, важно иметь операторы return и throw в обработчиках успеха и отказа.
$postJSON = file_get_contents("php://input");
$dataArr = json_decode($postJSON, TRUE);
var_dump($dataArr);
Данные в формате JSON находятся в теле запроса POST. Имя переменной не отправляется, только содержимое.
Второй аргумент функции json_decode указывает, что объекты должны быть преобразованы в ассоциативные массивы.
Имейте в виду, что на эти POST-запросы распространяется политика того же происхождения. Запрос XHR должен быть сделан со страницы веб-сайта, которая имеет то же происхождение, что и страница, получающая запрос POST.
Проверьте вкладку сети в консоли разработчика, чтобы убедиться, что отправленный запрос на самом деле является запросом POST, а не запросом OPTIONS.