angularjs - 从 http.post 获取返回值

标签 angularjs

我的问题如下我这里有这段代码:

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

当我给出 console.log (response.data) 时,它返回以下内容:

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

我需要获取“状态”值。在我使用以下内容之前它运行良好

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) 的响应进行测试

Image console.log

最佳答案

下面的东西应该可以解决问题:

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

关于angularjs - 从 http.post 获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55884622/

相关文章:

javascript - 根据angularjs中的当前日期传递启用和禁用按钮

javascript - AngularJS $http.jsonp() 方法访问 Google map 距离矩阵 API

javascript - 检查 JavaScript 和/或 AngularJS 中的重复项

javascript - ng-repeat 表中的 Angularjs 复选框

javascript - angularjs md checkbox获取选中的值

angularjs - "Failed to execute ' postMessage '"错误来自 Froogaloop 通过 AngularJS 指令

Angularjs 在生产中禁用调试数据

javascript - 如何获取所有子元素输入

javascript - $q.all 的错误检测

css - 从 $mdSidenav 中移除灰色叠加层/背景