您好,我正在尝试发送数据到服务器,但它不工作,并返回未定义
以下是我尝试过的方法
客户端:
var Data = new FormData();
Data.append('name', this.state.name);
Data.append('time', this.state.time);
Data.append('portion', this.state.portion);
Data.append('method', this.state.method);
Data.append('tags', JSON.stringify(this.state.tags));
Data.append('ingredients', JSON.stringify(this.state.ingredients))
Data.append('level', this.state.level)
console.log(Data)
axios.post('/api/post-recipe', Data)
.then(res => res.data)
.then(data =>{
console.log(data.dish)
})
.catch(err => {
if(err.response){
if(err.response.data.redirect === true){
window.location.replace(err.response.data.location)
}
if(err.response.data.message){
alert(err.response.data.message)
}
}
})
服务器:
router.post('/', async (req, res) => {
try {
const {
name,
time,
portion,
ingredients,
method,
level,
tags
} = req.body
console.log(name + time + portion + ingredients + method + level + tags)
} catch (error) {
return res.status(500).send({
message: error.message
})
}
})
它在控制台中记录NaN,如果我在控制台中添加诸如'name: ' name
等的单词,它会记录未定义的值,我已经从npm安装了表单数据,并且我正在将其导入到我的代码中,但我无法获得问题所在
发布于 2019-04-15 02:41:10
您将数据发送到的路由(/api/post-recipe
)与您处理数据的服务器(/
)上的路由不匹配。您要么必须在客户机中更改对axios
的调用,要么必须调整服务器上的路由定义以匹配/api/post-recipe
。
此外,您尝试使用+
连接各个字符串,但这不一定有效。试一试
console.log(name, time, ...);
而是放入...
的其他变量。如果您还想知道变量的名称,而不仅仅是它们的值,请将所有参数封装在一对大括号中的console.log
中:
console.log({ name, time, ... });
这会将参数转换为对象,并显示它们的名称。
https://stackoverflow.com/questions/55677819
复制相似问题