Я знаю, что есть несколько сообщений на SO и во многих блогах, объясняющих, как получить данные JSON, которые были отправлены для чтения php. Некоторые используют url-encoding, другие file_get_contents.
Во всяком случае, это не работает для меня. Я уверен, что это смехотворно простое объяснение, но мой код просто не работает (запрос отправляется, бэкенд отвечает, но это сообщение более или менее всегда одно и то же: ничего не приходит туда!
Поэтому в моем контроллере у меня есть:
var request_data = {
firstname: 'Quentin',
lastname: 'Hapsburg'
};
$http.post("lib/api/public/blog/post", JSON.stringify(request_data))
.success(function(data) {
console.log(data);
})
И в php файле:
$data = file_get_contents("php://input");
$data = json_decode($data, TRUE);
var_dump($data);
Результат NULL
! Любые предложения о том, где моя ошибка?
EDIT: Это может иметь какое-то отношение к правилам перезаписи, но не является дубликатом, поскольку тот же ответ не решает этот вопрос!
попробуйте использовать application/x-www-form-urlencoded
$http.post(urlBase, $httpParamSerializer(object), {
headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
}).then(function(r) {
callback(r);
});
и тогда php сможет получить доступ к вашему размещенному объекту, используя $ _POST
Используйте этот файл js. Это будет работать
Index.html:
<html>
<head>
<script src="js/angular.min.js"></script>
</head>
<body ng-app="myApp">
<div ng-controller="mainCtrl">
sdadasdasd
</div>
<script src="app.js"></script>
</body>
</html>
app.js:
var app = angular.module("myApp", []);
app.controller("mainCtrl", function($scope,$http){
var request_data = {
firstname: 'Quentin',
lastname: 'Hapsburg'
};
$http.post("test.php", JSON.stringify(request_data)).success(function(data) {
console.log(data);
});
});