угловой $http.post возвращает код 302

У меня есть следующий php:

    public function getLoggedInUser()
{
    if($this->isAjax())
    {
        exit (json_encode($_SESSION['User']));
    }
}

И следующий угловой:

    userModule.controller('UserController', [ '$http', function($http)
{
    var userCtrl = this;
    this.user = {};

    $http.post('/User/getLoggedInUser', {request: 'ajax'}).success(function(data)
    {
       userCtrl.user = data;
    });
}]);

я получаю код 302, но результат не найден, и скрипт php не работает.

Что я делаю неправильно?

Обновить

После отладки ядра моего PHP я вижу, что переменная request не отправляется на сервер.

Почему нет?


person Marc Rasmussen    schedule 13.02.2015    source источник
comment
Вы используете Laravel с angularJS?   -  person Monang Shah    schedule 13.02.2015
comment
@MonangShah Нет, не сейчас, не так ли?   -  person Marc Rasmussen    schedule 13.02.2015
comment
Можете ли вы дать мне ссылку, чтобы я мог проверить дальше   -  person Monang Shah    schedule 13.02.2015


Ответы (1)


Обратите внимание, что я не эксперт по PHP, но несколько дней назад я провел некоторое тестирование, связанное с другим AngularJS post request, который очень похож на этот. Итак, мое решение здесь основано на моем опыте, связанном с этим предыдущим опытом публикации данных PHP. Также здесь использовалось руководство по php для $_SESSION.

Прежде всего, я бы поместил ваш php-код в файл getLoggedInUser.php, как показано ниже:

<?php
 if ($_SERVER["REQUEST_METHOD"] === "POST")
 {
    echo $_SESSION["User"];  
 }
?>

а затем внесите некоторые изменения в UserController.

//added  $scope in the controller's function parameters, just in case
userModule.controller('UserController', [ '$http', function($scope, $http)
{
    var userCtrl = this;
    this.user = {};
  //let’s pass empty data object
   var dataObj = {};
    $http.post('User/getLoggedInUser.php', dataObj).
       success(function (data, status, headers, config)
       {     
              console.log("success");

              userCtrl.user = data;
              //if the above doesn’t work, try something like below
              // $scope.userCtrl.user = data;
      })
      .error(function (data, status, headers, config)
      { 
              console.log("error");
      }); 
}]);

Я надеюсь, что это поможет с проблемой.

Некоторые примечания: AngularJS для меня совершенно новый, и если у кого-то другое мнение о том, как должен быть сделан этот почтовый вызов, то не стесняйтесь комментировать это решение :-) Кстати, я просмотрел некоторые другие решения проблемы публикации php (без AngularJS) как этот, и я до сих пор не уверен, как лучше всего решить эту проблему с публикацией.

person jyrkim    schedule 13.02.2015