Получить возвращаемое значение из http.post - PullRequest
3 голосов
/ 27 апреля 2019

У меня следующий вопрос: у меня есть этот код:

$http.post("dologin", data).then(function(resposta)

Когда я передаю console.log (response.data), он возвращает следующее:

 string(40) "7f9870111b7c032f6203d144c97b8aa5a3e3f0c5"
 {"status":"success","type_user":"secretary"}

Iнужно получить значение «статус».Раньше я использовал следующее, и он работал нормально

if (response.data.status === 'success') {
    if (answer.data.type_user === 'teacher') {
      $ location.path ('teacher_view');
    } else if (response.data.type_user === 'candidate') {
      $ location.path ('candidate_view');
    } else if (answer.data.type_user === 'secretary') {
      $ location.path ('secretaria_view');
    }

Теперь он больше не работает, и когда я даю console.log (response.data.status);возвращает неопределенное значение

Мой бэкэнд php

    public function do_login(){
     $this->load->model('LoginM');
     $request_body = file_get_contents('php://input');
 $data = json_decode($request_body);
 $cpf = trim($data->cpf);
 $senha = trim($data->senha);
     $tipo = trim($data->tipo);

 $response = $this->LoginM->do_login($cpf, $senha, $tipo);

 if ($response["status"] === "success"){
        if ($tipo == 'admin') {
     $data = array(
         'logged_in' => true,
         'cod_user' => $response["cod_user"]
     );
     $message = array("status"=>"success", "tipo_user"=>"secretaria");
     }elseif ($tipo == 'professor') {
     $data = array(
         'logged_in' => true,
         'cod_professor' => $response["cod_professor"]
     );
     $message = array("status"=>"success", "tipo_user"=>"professor");
    }elseif ($tipo == 'candidato') {
     $data = array(
         'logged_in' => true,
         'cod_candidato' => $response["cod_candidato"]
     );
     $message = array("status"=>"success", "tipo_user"=>"candidato");
    }
   $this->session->set_userdata($data);
 }else{
   $message = array("status"=>"error","message"=>"CPF ou senha incorretos");
 }
 echo json_encode ($message);
}

Тест с ответом от console.log (response.data) и console.log (response.data.status)

Изображение console.log

1 Ответ

1 голос
/ 28 апреля 2019

Ниже следует сделать трюк:

var state = JSON.parse('{'+res.data.split("{")[1]);

if (state.status === 'success') {
 if (state.type_user === 'teacher') {
  $ location.path ('teacher_view');
 } else if (state.type_user === 'candidate') {
  $ location.path ('candidate_view');
 } else if (state.type_user === 'secretary') {
  $ location.path ('secretaria_view');
}

Но я бы настоятельно рекомендовал вам исправить ответ сервера от строки, которую вы получаете прямо сейчас, до JSON, который вы получили ранее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...