Обработка PHP $ _POST с помощью AngularJS?

Я делаю приложение AngularJS с бэкэндом PHP, и я пытаюсь сохранить некоторые данные для записи в базу данных. Я наткнулся на препятствие, которое я пытаюсь перепрыгнуть.

Когда я делаю var_export($_POST) я получаю пустой (пустой) массив в качестве возврата.

Однако, когда я делаю $return json_decode(file_get_contents("php://input"), false); Я получаю полный массив со значениями, которые я ожидаю?

Как я могу использовать переменную $ _POST с приведенным ниже?


Мой код AngularJS:

 $scope.testPostRequest = function() { $http({ method: 'POST', url: 'requestHandler.php', data: JSON.stringify($scope.scores), // pass in data as strings headers: { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload) }).success(function(data) { console.log(data); if (!data.success) { // if not successful, bind errors to error variables } else { // if successful, bind success message to message $scope.message = data.message; } }); } 

Весь мой PHP-код (я просто комментирую интересующее меня возвращение).

 //$data = json_decode(file_get_contents("php://input"), false); //return var_export($data); return var_export($_POST); 

Solutions Collecting From Web of "Обработка PHP $ _POST с помощью AngularJS?"

ExpertSystem прав насчет того, как данные должны быть отформатированы.

Не идеально, но jQuery может содержать решение. Если у вас есть ссылка на jQuery, вы можете установить данные для:

 data: $.param($scope.scores); 

Подробнее отсюда: http://jeecookbook.blogspot.com/2013/03/angularjs-trick-posting-data-using-url.html

Взято из этого сообщения: как я могу отправлять данные в виде данных формы вместо полезной нагрузки запроса?

Спасибо Райану Тейлору за его ответ, и хотя я выбрал его ответ как правильный, я хотел предоставить другим, смотрящим на это сообщение, решение, которое я придумал. Ответ Райана более точно отвечает на мой вопрос, хотя так славно сэр! Как бы то ни было, я стараюсь избегать использования jQuery для целей моего упражнения:

Кроме того, я изменил свой внутренний код PHP, чтобы сделать следующее:

 switch ($_SERVER['REQUEST_METHOD']) { case 'POST': $data = json_decode(utf8_encode(file_get_contents("php://input")), false); if(!empty($data)) { return var_export($data); } break; default: header('HTTP/1.1 405 Method Not Allowed'); break; } 

В приведенном выше примере используется исходный ввод PHP для преобразования его в строку JSON. В то время как моя главная задача состояла в том, чтобы попытаться заполнить переменную $ _POST, это рабочее решение, которое я нашел без необходимости jQuery. Примечание. Вы также заметите, что я использую метод utf8_encode, потому что я читал это было необходимо, так как некоторые символы не ASCII могут привести к тому, что строка JSON не сможет декодироваться.

Вышеупомянутое решение также позволяет избежать использования jQuery в вашем приложении.