У меня проблемы, когда я отправляю данные методом 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.
Я создал переменную для тестирования, например <? php echo json_encode ('test')?>, и она сработала. Проблема заключается в отправке данных методом публикации.
Я тестировал с почтальоном и понял, что file_get_contents ('php: // input') в локальной среде не работает. Не знаю почему.






если проблема на стороне 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.
Я тестировал с почтальоном и понял, что file_get_contents ('php: // input') в локальной среде не работает. Не знаю почему.
Чтобы отправить данные 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') в локальной среде не работает. Не знаю почему.
Обязательно используйте Content-Type: application/json. Не отменяйте значения по умолчанию для AngularJS.
проблема на стороне сервера или во фронтенде?