$ http () не отправляет данные методом POST на сервер PHP

У меня проблемы, когда я отправляю данные методом post в файл php, вот пример:

function SimuladorService ( $http, config ) {
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8;";
$http.defaults.headers.post["Accept"] = "application/x-www-form-urlencoded";

const post = function(dados) {
    return $http({
        method: 'POST',
        url: "example.php",
        data: {
            nome:'almir',
            sobrenome: 'teste'
        },
        transformRequest : function(obj) {
            var str = [];
            for(var p in obj)
            str.push(encodeURIComponent(p) + " = " + encodeURIComponent(obj[p]));
            return str.join("&");
        },

    })

}}

example.php

<?php
echo json_encode($_POST);

он не возвращает мои данные $ _POST.

проблема на стороне сервера или во фронтенде?

BartoszTermena 07.12.2018 16:55

Я создал переменную для тестирования, например <? php echo json_encode ('test')?>, и она сработала. Проблема заключается в отправке данных методом публикации.

Almir Júnior 07.12.2018 17:02

Я тестировал с почтальоном и понял, что file_get_contents ('php: // input') в локальной среде не работает. Не знаю почему.

Almir Júnior 07.12.2018 18:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
40
2

Ответы 2

если проблема на стороне angular, попробуйте этот код:

 $scope.post = function(dados){
        console.info(dados)
        $http({
            method: 'POST',
            url: "example.php",
            data: {
                nome:'almir',
                sobrenome: 'teste'
                },
            withCredentials: true,
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            })
            .then(function successCallback(data) {
                console.info(data)
            }, function errorCallback(response) {
                console.info(response);
            });

    }

html: <button ng-click = "post('dados')">click</button>

проверьте, что вы получаете в console.info, если проблема не исчезнет, ​​тогда можно будет найти причину

это то же самое, что я создал. Проблема в том, что файл php не получает $ _post и не возвращает мои данные $ _POST.

Almir Júnior 07.12.2018 17:04

Я тестировал с почтальоном и понял, что file_get_contents ('php: // input') в локальной среде не работает. Не знаю почему.

Almir Júnior 07.12.2018 18:59

Чтобы отправить данные POST в PHP API, просто используйте значения по умолчанию:

var data = {
    nome:'almir',
    sobrenome: 'teste'
};

function post(data) {
    var url = "example.php";
    return $http.post(url,data);
}

post(data).then(function(response) {
    console.info(response.data)
    $scope.data = response.data;
}).catch(function(response) {
    console.info(response);
    throw response;
})

На стороне сервера PHP:

<?php
$data = json_decode(file_get_contents('php://input'), true);
echo file_get_contents('php://input');

В платформе AngularJS по умолчанию используются данные JSON. Лучше избегать использования данных в кодировке url.

Я тестировал с почтальоном и понял, что file_get_contents ('php: // input') в локальной среде не работает. Не знаю почему.

Almir Júnior 07.12.2018 18:57

Обязательно используйте Content-Type: application/json. Не отменяйте значения по умолчанию для AngularJS.

georgeawg 07.12.2018 19:04

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