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

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 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果