使用axios进行发布请求和获取响应

时间:2019-03-20 16:06:38

标签: reactjs axios

从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])
}

}

});

3 个答案:

答案 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);