满口金牙 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 爬取豆瓣电影相关处理
  • ¥15 手机淘宝抓清除消息接口
  • ¥15 C#无selenium
  • ¥15 LD衰减计算的结果过大
  • ¥15 用机器学习方法帮助保险公司预测哪些是欺诈行为
  • ¥15 计算300m以内的LD衰减
  • ¥15 数据爬取,python
  • ¥15 怎么看 cst中一个面的功率分布图,请说明详细步骤。类似下图
  • ¥15 为什么我的pycharm无法用pyqt6的QtWebEngine
  • ¥15 FOR循环语句显示查询超过300S错误怎么办