Передача данных из Angularjs в PHP

Я действительно новичок в 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);

Проверьте вкладку сети в консоли разработчика, чтобы убедиться, что отправленный запрос на самом деле является запросом POST, а не запросом OPTIONS.

georgeawg 18.05.2019 16:19

Возможный дубликат Угловой HTTP-пост в PHP и undefined

random_user_name 18.05.2019 19:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
314
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Методы .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 в обработчиках успеха и отказа.

php-файл:

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

var_dump($dataArr);

Данные в формате JSON находятся в теле запроса POST. Имя переменной не отправляется, только содержимое.

Второй аргумент функции json_decode указывает, что объекты должны быть преобразованы в ассоциативные массивы.

Имейте в виду, что на эти POST-запросы распространяется политика того же происхождения. Запрос XHR должен быть сделан со страницы веб-сайта, которая имеет то же происхождение, что и страница, получающая запрос POST.

Другие вопросы по теме