通常情况下,当我们使用axios发送post请求时,它会返回一个Promise对象,而在使用then方法来获取结果时,会发现结果始终为undefined。这是因为我们没有正确处理返回数据的格式,造成了格式不匹配的问题。
为了解决这个问题,我们需要在后端返回数据时,采用正确的格式,比如采用JSON格式。然后在前端使用axios时,我们需要使用响应拦截器对数据进行处理,使其能够匹配我们期望的格式。以下是一个示例代码:
import axios from 'axios'
axios.interceptors.response.use(
response => {
const { data } = response
// 根据实际返回的数据格式进行适当地处理
return data
},
error => Promise.reject(error)
)
axios.post('/api/xxx', { content: 'xxx' })
.then(data => console.log(data))
.catch(error => console.log(error))
在上面的代码中,我们使用响应拦截器来处理返回的数据,当有数据响应时,会自动进入拦截器对数据进行处理,然后再传递给后续的then方法进行处理。这样,我们就能够正确地获取到我们期望的数据了。