错误小结之—json解析异常

本文主要介绍了在登录界面点击【退出】按钮时遇到的JSON解析异常问题。通过逐步排查,发现错误主要源于请求路径错误和未携带有效数据。在修复路径并补充参数后,问题得到解决。同时,文章还分析了不同错误情况下,如路径错误、参数错误等导致的解析异常及其处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、问题描述

二、解决思路

三、分析各种情况下的报错


一、问题描述

        登录界面点击【退出】按钮,控制台提示json解析异常

二、解决思路:

        1、找到对应的组件和事件回调

 <el-dropdown-item divided @click.native="logout">
        <span style="display:block;">退出</span>
 </el-dropdown-item>

        2、该事件回调内,向仓库派发了一个action。接着找到store目录下存放user相关的js文件和该异步操作。

 methods: { 
    async logout() {
      await this.$store.dispatch('user/logout')
      this.$router.push(`/login?redirect=${this.$route.fullPath}`)
    }
 }

        

 3、函数内返回一个Promise结果,并对resolve和reject结果给出相应的操作;并通过引入的口logout方法发送请求


const actions = {
  // 退出登录
  logout({ commit, state }) {
    return new Promise((resolve, reject) => {
       //成功回调
      logout({ token: state.token }).then(() => {
        removeToken()                   
        resetRouter()
        commit('RESET_STATE')
        resolve()
      }).catch(error => {
         // 失败回调
         reject(error)
      })
    })
  },
}

        4、找到相关的api文件, 发现三处错误,导致json解析异常

              路径写错; 未接收实参;  发送post请求时,未携带参数

// 对外暴露退出登录的接口(函数)
export function logout() {
  return request({
    url: '/admin/acl/index/login',
    method: 'post',
 
  })
}

         最主要的问题是在于,发送请求的时候,路径错误和没有携带有效的数据。

         这里将路径更正,补全参数,运行即正常。

三、分析各种情况下的报错:

 情况1:

         路径错误,只接收了形参,请求未携带参数时 —— 会提示解析异常,也就是最根本的问题。


情况2:

        定义了形参,请求路径错误 ,并携带了(错误的)参数—— 则会抛出Error,提示以下信息:

    查看第二行报错提示,查看服务器响应失败的相关操作:在这里将错误信息返回

       这里错误被logout函数的catch捕获到,(跳过then)执行了reject操作


情况3:

        未接收实参的情况下**,发送请求时携带的是空数据data,但路径不管是错误或者正确的时候,都会先提示引用错误,在该作用域下找不到变量data。


情况4:

        路径正确时,接收了实参,发送请求时未携带data。退出功能正常进行

        路径正确的时候,未接收实参,同时请求未携带参数,也是能正常退出的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值