接收未定义而不是 JSON
Receiving undefined instead of JSON
我正在使用 React axios 从服务器接收 JSON(objects 的数组)(服务器端写在 Go 上,我通过 Postman 检查,JSON 已正确发送).
这是我在客户端获取数据的方式:
export const getPostData = async () => {
const URL = 'http://localhost:8083/test'
try {
const { data: { data }} = await axios.get(URL);
console.log(data)
return data;
} catch (error) {
console.log(error)
}
};
这就是在 App.js 中调用 getPostData 的方式:
const App = () => {
const [ posts, setPosts ] = useState([]);
useEffect(() => {
getPostData()
.then((data) => {
setPosts(data)
console.log(data)
})
},[]);
问题是我在浏览器控制台中得到 undefined。我在这里发现了很多类似的问题,但我找不到解决方案(发送 JSON 时设置了 Access-Control-Allow-Origin header)。
我应该多学点什么,可能是哪里出了问题?如果有任何帮助,我将不胜感激!
如果这可能有帮助,下面是我在 Go 中发送 JSON 的方式:
c.Header("Access-Control-Allow-Origin", "*")
c.Header("Content-Type", "application/json")
c.JSON(http.StatusOK, gin.H{
"message": "Hello",
})
这看起来很可疑:
const { data: { data }} = await axios.get(URL);
它试图从来自 axios 的响应的 data
属性 上的一个对象中读取一个名为 data
的 属性,像这样没有解构:
const data = (await axios.get(URL)).data.data;
你的 Go 代码看起来不像它在它发送的内容周围放置了一个 {"data": ___}
包装器,而 Axios 只添加了 一个 层的 {data: ___}
包装器它给你的回应,而不是两个。
如果您想要 JSON 响应中的对象,请移除内部解构:
const { data } = await axios.get(URL);
data
将是 {message: "Hello"}
假设 Go 代码发送 JSON {"message": "Hello"}
.
另外,您的 JavaScript 代码似乎需要一系列帖子,但您的 Go 代码只是发送 {"message": "Hello"}
.
我正在使用 React axios 从服务器接收 JSON(objects 的数组)(服务器端写在 Go 上,我通过 Postman 检查,JSON 已正确发送).
这是我在客户端获取数据的方式:
export const getPostData = async () => {
const URL = 'http://localhost:8083/test'
try {
const { data: { data }} = await axios.get(URL);
console.log(data)
return data;
} catch (error) {
console.log(error)
}
};
这就是在 App.js 中调用 getPostData 的方式:
const App = () => {
const [ posts, setPosts ] = useState([]);
useEffect(() => {
getPostData()
.then((data) => {
setPosts(data)
console.log(data)
})
},[]);
问题是我在浏览器控制台中得到 undefined。我在这里发现了很多类似的问题,但我找不到解决方案(发送 JSON 时设置了 Access-Control-Allow-Origin header)。
我应该多学点什么,可能是哪里出了问题?如果有任何帮助,我将不胜感激!
如果这可能有帮助,下面是我在 Go 中发送 JSON 的方式:
c.Header("Access-Control-Allow-Origin", "*")
c.Header("Content-Type", "application/json")
c.JSON(http.StatusOK, gin.H{
"message": "Hello",
})
这看起来很可疑:
const { data: { data }} = await axios.get(URL);
它试图从来自 axios 的响应的 data
属性 上的一个对象中读取一个名为 data
的 属性,像这样没有解构:
const data = (await axios.get(URL)).data.data;
你的 Go 代码看起来不像它在它发送的内容周围放置了一个 {"data": ___}
包装器,而 Axios 只添加了 一个 层的 {data: ___}
包装器它给你的回应,而不是两个。
如果您想要 JSON 响应中的对象,请移除内部解构:
const { data } = await axios.get(URL);
data
将是 {message: "Hello"}
假设 Go 代码发送 JSON {"message": "Hello"}
.
另外,您的 JavaScript 代码似乎需要一系列帖子,但您的 Go 代码只是发送 {"message": "Hello"}
.