从console记录时从axios响应中获取数据返回未定义的值 我尝试了很多方法,但是响应始终显示为未定义 这是用户数据 const userdatas = [{id:1,firstname:“ Leanne”,lastname:“ Gram”,密码:“ 123”,电话:“ 9474211442”} **
客户
handleSubmit=(e)=>{
alert(this.state.Firstname)
e.preventDefault();
axios.post('http://localhost:3001/login', {
lastname: JSON.stringify(this.state.Lastname),
firstname: JSON.stringify(this.state.Firstname),
password:JSON.stringify(this.state.password),
phoneno:JSON.stringify(this.state.phoneno)
}).then(res=>alert(res.data.id))
}
]
快递
const userdatas=[ {id: 1,firstname: "Leanne",lastname:"Gram",password: "123",phone:"9474211442"}**
app.post('/login',(req,res)=>{
let logindetail={firstname:req.body.firstname,
password:req.body.password}
logindetail.firstname=logindetail.firstname.replace(/['"]+/g, '')
logindetail.password=logindetail.password.replace(/['"]+/g, '')
var count = Object.keys(userdatas).length;
for(var i=0;i<count;i++)
{
if(logindetail.firstname===userdatas[i].firstname&&logindetail.password===userdatas[i].password)
{
res.json(userdatas[i])
}
}
});
答案 0 :(得分:0)
在您的let person = lotsOfPeople[2]
person.firstName = "Lucy"
部分中,Express
似乎是一个对象,但是您尝试在userdatas
调用中像数组一样查找它。您需要像设置计数值时一样将其包装在res.json
中。
答案 1 :(得分:0)
鉴于您在后端收到的内容似乎不正确,我将重新访问前端请求。恕我直言,您应该只对要包装的整个对象进行JSON.stringify调用,而不是每个prop单独调用。尝试一下,然后查看后端收到的内容。
答案 2 :(得分:-1)
首先userdatas
是一个对象,您试图像在数组中一样访问其值。其次,您确定循环内的if条件是否满足一次?因为您不能对一个请求有多个响应。循环时在变量中构建单个响应主体。循环结束后发送。
for (var i = 0; i < count; i++) {
if (
logindetail.firstname === userdatas[i].firstname &&
logindetail.password === userdatas[i].password
) {
res.json(userdatas[i]);
}
}
将其更改为类似的内容
let result = [];
for (var i = 0; i < count; i++) {
if (***your corrected condition***) {
result = userdatas[i];
}
}
res.send(result);