Codeigniter + Angular Js: как получить данные JSON

Это ситуация:

У меня есть простое приложение, сделанное в Angular JS, которое общается с сервером через API, созданный в кодеигниторе.

В приложении есть система входа в систему. Когда пользователь вводит адрес электронной почты и пароль, эти данные отправляются на сервер, если существует почта и пароль совпадают, он возвращает true.

Я сделал много попыток, но не понял, как я могу это сделать правильно.

Это код:

Форма:

<form role="form" method="post" novalidate ng-submit="submitForm()"> <div class="form-group"> <label for="exampleInputEmail1">Email address</label> <input type="email" class="form-control" name="email" ng-model="user.name" placeholder="Enter email"> </div> <div class="form-group"> <label for="exampleInputPassword1">Password</label> <input type="password" class="form-control" name="password" ng-model="user.password" placeholder="Password"> </div> <button type="submit" class="btn btn-default">Submit</button> </form> 

Это угловой контроллер js:

  $scope.authorized = false; $scope.user = {}; $scope.submitForm = function() { console.log("posting data...."); $http({ method : 'POST', url : 'http://127.0.0.1/api/main/login', headers: {'Content-Type': 'application/json'}, data : JSON.stringify({email:$scope.user.email, password:$scope.user.password}) }).success(function(data) { console.log(data); $scope.authorized = data; if ($scope.authorized) { $location.path("memberArea"); }; }); } 

В методе codeigniter пробовали много вещей. Прямо сейчас есть только одно:

 function login() { print json_encode($_POST); } 

Но я не знаю, может ли получить данные в $ _POST, потому что он кажется пустым.

Итак, вопрос:

Как я могу получить данные в методе codeigniter? Лучше отправлять как JSON, а затем json_decode? Я также попробовал json_decode ($ _ POST, true); Но был нулевым. Но если данные не находятся в $ _POST, где? Я немного смущен.

Спасибо за помощь!

РЕДАКТИРОВАТЬ:

Спасибо, ребята, за ответ. Это было одно, что попробовали. Но как-то не работает. Теперь, например, метод выглядит следующим образом:

 function login() { $email = $this->input->post('email'); var_dump($email); print json_encode($email); } 

Но то, что возвращается, является логическим ложным.

Solutions Collecting From Web of "Codeigniter + Angular Js: как получить данные JSON"

Спасибо за ответ. решение выглядит следующим образом

 $obj=json_decode(file_get_contents('php://input')); 

вы можете проверить его

 print_r(json_decode(file_get_contents('php://input'))); 

$_POST будет пуст в CodeIgniter, потому что он намеренно освобождает его из соображений безопасности. Вам нужно использовать $this->input->post(); вместо.

Класс ввода CodeIgniter

Использование:

 $postData = $this->input->post(); 

Он должен дать вам массив со всеми данными сообщения.

Я также советую вам включить фильтрацию XSS.

Ниже приведена документация для класса ввода Codeigniter: http://ellislab.com/codeigniter/user-guide/libraries/input.html

данные, отправленные с запросом, являются парами имя-значение, поэтому вы должны написать следующее:

 data : {"myformdata":JSON.stringify({email:$scope.user.email, password:$scope.user.password})} 

и в воспламенителе кода вы можете получить данные:

 $this->input->post("myformdata"); //should return what // that JSON.stringify returned 

Хотя это уже ответили, я довольно часто получаю эту небольшую утилиту, включенную во многие из моих приложений, которые должны принимать как application/x-www-form-urlencoded и application/json POST.

 if (strcasecmp($_SERVER['REQUEST_METHOD'], 'post') === 0 && stripos($_SERVER['CONTENT_TYPE'], 'application/json') !== FALSE) { // POST is actually in json format, do an internal translation $_POST += json_decode(file_get_contents('php://input'), true); } 

После этого момента вы можете просто использовать $_POST как обычно, все данные JSON будут декодированы для вас.