千万少男 2020-02-27 16:15 采纳率: 0%
浏览 11399

Vue控制台报错Uncaught (in promise) TypeError: Cannot read property 'instructor' of undefined at eval

Vue控制台报错Uncaught (in promise) TypeError: Cannot read property 'instructor' of undefined at eval
代码如下

ajax.POST('login', loginData) // axios里data与params区别
            .then(function (res) {
              that.loginStatus.loading = false
              if (res.data['instructor'] === 'instructor') {
                roleInfo.role = 'instructor'
              }

php代码

public function login () {
            $dataArr = request()->param();
            $role = $dataArr['role'];
            $instructor = '';
            if ($role === 'admin') {
                $selectSql = "select admin_username as fullname,password from beta_administrator where admin_username = ?";
            } elseif ($role === 'student') {
                $selectSql = "select stu_name as fullname,password from beta_student where stu_number = ?";
            }else {
                $selectCounselorSql = "select * from beta_instructor where ins_number = ?";
                $selectCounselorRes = Db::query($selectCounselorSql, [$dataArr['username']]);//获取结果集
                $vs = check_before_add_data($selectCounselorRes);//判断结果集是否为空
                if ( $vs === 1 ){
                    $instructor = 'instructor';
                }
                $selectSql = "select tea_name as fullname,password from beta_teacher where tea_number = ?";
            }
            $selectRes = Db::query($selectSql, [$dataArr['username']]);
            $v = check_before_add_data($selectRes);
            if ($v === 1) {
                if ($selectRes[0]['password'] === $dataArr['password']) {
                    return_json(['fullName' => $selectRes[0]['fullname'],'instructor' => $instructor], 'ok', 200);
                } else {
                    return_json('','账户或密码错误',400);
                }
            } elseif ($v === 0) {
                return_json('','用户名不存在',400);
            } else {
                return_json('','登录失败,未知错误',400);
            }

        }
}

请求大神指正

  • 写回答

1条回答

  • lshen01 2023-03-17 08:36
    关注

    参考GPT和自己的思路:

    根据你提供的代码,可能出错的地方是在第4行的判断语句中,判断res.data中是否有'instructor'属性,但是根据报错信息来看,'res.data'可能是undefined,导致无法获取'instructor'属性。这很可能是由于异步请求返回时间过长,导致在then函数中操作数据时,res.data还没有被赋值或被赋值为undefined。

    需要我们先确定ajax.POST()方法返回的Promise对象是否正确、是否调用成功了。另外,在代码中,无论返回成功或失败,都需要在.then()的函数中进行处理。比如我们可以在.then()的函数中用console.log()语句打印出res的值,看看其是否与预期相符。如果不行,还需要根据返回状态码(res.status)进一步定位问题所在。

    如果以上操作都没有发现问题,可以尝试增加一个.catch()的函数,来捕捉可能存在的错误。具体代码如下:

    ajax.POST('login', loginData)
      .then(function (res) {
        that.loginStatus.loading = false
        if (res.data && res.data['instructor'] === 'instructor') { // 判断res.data是否存在
          roleInfo.role = 'instructor'
        }
      })
      .catch(function (error) {
        console.log(error)
      });
    

    同时,我们还需要确保服务器端的代码没有问题。在PHP代码中,也应该对返回的数据进行判断处理,如判断是否成功、是否存在、密码是否匹配等。可以使用类似于在JavaScript中的try...catch语句进行处理,确保代码可以正常运行。

    总之,要定位这个问题,我们需要对代码进行多个方面的调试和分析,才能找到问题的根源,并最终解决它。

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘