满口金牙 2022-05-11 17:33 采纳率: 91.1%
浏览 234
已结题

Vue3 Typescript 怎么把 axios post 返回数据取出来,请教

怎么把 postMethod()函数的返回 数据取出来,
这是Typescript 不是 JS !

// 封装的 axios 方法
import axios from 'axios'
  export function postMethod (url:string, params:object): any{
    axios.post(url, params).then(
      function (response) {
        alert(`成功POST,${response}`)
        console.log('成功连接',response)  // 这里正常运行,可以打印出返回的数据 code, token 等
      }
    ).catch(function (error) { alert(`${error}`)})
  }

// login.vue 组件 中调用,出错! 哪位帮改写一下,多谢

function loginSubmit () {
  // postMethod 函数 ,实际已经拿到数据(上面的代码中可以打印出来), 问题在这里 我怎么拿出来
  // 以前js下面这行写可以拿到数据,  现在改成 ts 这里报错,
  const { data: res } = postMethod('login/', { username: loginData.username, password: loginData.password }) 
  
  console.log('收至的res',res) // 代码进行不到这

  if (res.code === 1001) { return alert('用户名或密码错误') }
  if (res.token && res.code === 1000) {
    window.sessionStorage.setItem('token', res.token)
    router.push('/home')
  } else { alert('登录出错') }
}
提示:
  菜 niao 一枚目前提问近百了,
  但是有些回答....., 也都采纳过题。
  菜niao  最需要的是代码改写。
  有效的改写,追加一份当前悬赏。 
  感谢!
  • 写回答

8条回答 默认 最新

  • czDonald 2022-05-11 18:03
    关注

    改动的已经在注释后增加--区别 //--
    请求是异步的需要改成async await 或then 请求方法需要增加return

    
    // 封装的 axios 方法
    import axios from 'axios'
      export function postMethod (url:string, params:object): any{
      // --增加return
    return axios.post(url, params).then(
          function (response) {
            alert(`成功POST,${response}`)
            console.log('成功连接',response)  // 这里正常运行,可以打印出返回的数据 code, token 等
    
                //--如果想方法中增加then 需要return需要返回的数据 增加return
              return response;
    
          }
        ).catch(function (error) { alert(`${error}`)})
      }
     
    // login.vue 组件 中调用,出错! 哪位帮改写一下,多谢
     
    function loginSubmit () {
      // postMethod 函数 ,实际已经拿到数据(上面的代码中可以打印出来), 问题在这里 我怎么拿出来
      // 以前js下面这行写可以拿到数据,  现在改成 ts 这里报错,
    
    // --请求为异步请求 需要async await 或then处理
    postMethod('login/', { username: loginData.username, password: loginData.password }) .then(res=>{
      console.log(res);
    console.log('收至的res',res) // 代码进行不到这
      if (res.code === 1001) { return alert('用户名或密码错误') }
      if (res.token && res.code === 1000) {
        window.sessionStorage.setItem('token', res.token)
        router.push('/home')
      } else { alert('登录出错') }
    })
     // const { data: res } = postMethod('login/', { username: loginData.username, password: loginData.password }) 
      }
      
     
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 修改了问题 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 dir815漏洞反弹shell失败
  • ¥15 支付宝小程序云函数登录获取user_id失败
  • ¥50 python for 循环速度慢
  • ¥15 CubeMX生成的代码用keil编译有报错
  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制