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

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日

悬赏问题

  • ¥30 backtrader对于期货交易的现金和资产计算的问题
  • ¥15 求C# .net4.8小报表工具
  • ¥15 安装虚拟机时出现问题
  • ¥15 Selenium+docker Chrome不能运行
  • ¥15 mac电脑,安装charles后无法正常抓包
  • ¥18 visio打开文件一直显示文件未找到
  • ¥15 请教一下,openwrt如何让同一usb储存设备拔插后设备符号不变?
  • ¥50 使用quartz框架进行分布式任务定时调度,启动了两个实例,但是只有一个实例参与调度,另外一个实例没有参与调度,不知道是为什么?请各位帮助看一下原因!!
  • ¥50 怎么获取Ace Editor中的python代码后怎么调用Skulpt执行代码
  • ¥30 fpga基于dds生成幅值相位频率和波形可调的容易信号发生器。