react 和 axios POST 抛出 Uncaught (in promise) TypeError: parsed is undefined
2020-12-03
4399
我不明白我的代码到底哪里出错了。GET 调用已解析,但当我尝试对同一台服务器进行 POST 调用时,却出现错误。我的 POST 端点与 Postman 配合良好。
apiConnection.js
function get(data){
return axios.get("http://localhost:8080/api/questions",
{
params:data.payload
}, {
headers: {
'accept': 'application/json',
}
})
}
function post(data){
console.log(data.payload) //my payload is received here
return axios.post("http://localhost:8080/api/answer", {
params:data.payload
}, {
headers: {
'accept': 'application/json',
}
}
)
}
export { get, post }
这是我在控制台中收到的错误
这是我在 react 中进行调用的方式
index.js
GET(正常接收响应)
import { get, post } from "apiConnection.js"
...
componentDidMount(){
const data = {
payload: {
linkId: getSlug()
}
}
get(data).then((result) => {
this.setState({reportId: result.data.report.id});
})
}
POST(抛出错误)
vote(userVote){
const data = {
payload: {
reportId: this.state.reportId,
}
}
post(data).then((result)=>{
this.state.questions[this.state.currentQuestion].vote = userVote
});
}
2个回答
我已经找到了问题的根源,但如果有人可以添加更多相关信息,可能会对其他人有所帮助。
在我的问题中,为简洁起见,我将请求 URL 从导入的常量更改为硬编码链接。
在我的代码中,我有一个用于 GET 和 POST 的变量
return axios.post(apiEndpoints[data.ep], data.payload)
我像这样导入端点变量
664714​​506
apiEndpoints.js
const server = 'http://localhost:8080/'
const api_version = 'api/'
const base_url = server+api_version;
export const EP_QUESTIONS = base_url+'questions';
export const EP_ANSWER = base_url+'answer';
由于某些未知原因,
EP_ANSWER
会抛出错误,即使我在定义
data.ep
时没有输入错误(
data.ep
有
EP_ANSWER
,我检查了一百万次)
解决方案是将
EP_ANSWER
更改为
EP_ANS
,一切按预期进行。
不知道为什么会这样。它可能是某个全局变量或保留字。
Ando
2020-12-04
刚刚看到这个并注意到了@Ando 的回复。
因此,我知道我首先尝试了一个硬编码的 URL,它起作用了。
然后我成功执行了 url.toString() 并且它起作用了。
不知道为什么,但是 Javascript 似乎将对象字符串与真实字符串区别对待。
Simon Le Pine
2022-09-14