【问题标题】:Using axios for post request and fetching response使用 axios 发布请求和获取响应
【发布时间】:2019-03-20 16:06:38
【问题描述】:

console.logged 时从 axios 响应中获取数据返回未定义的值 我尝试了很多方法,但响应总是显示未定义 这是用户数据 const userdatas=[ {id: 1,firstname:"Leanne",lastname:"Gram",password:"123",phone:"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])
}

}

});

【问题讨论】:

    标签: reactjs axios


    【解决方案1】:

    在您的 Express 部分中,userdatas 似乎是一个对象,但您正试图在您的 res.json 调用中像数组一样查找它。您需要像设置计数值时一样将其包装在 Object.keys 中。

    【讨论】:

    • 当我控制台记录它只返回 Object.keys 它只返回键 ['id', 'firstname', 'lastname', 'password', 'phone']
    • 啊,好的,我会编辑我的答案。我对您的用户数据结构做出了错误的假设。请发布您的 userdatas 对象结构的示例,以便我提供帮助。
    • 是不是因为我从客户端传递的数据类型......我已经发布了用户数据
    【解决方案2】:

    看到您在后端收到的内容似乎不正确,我会重新访问前端请求。恕我直言,您应该只对要包装的整个对象进行一次 JSON.stringify 调用,而不是对每个道具进行单独调用。试试看,然后看看后端收到了什么。

    【讨论】:

      【解决方案3】:

      首先,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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-20
        • 2021-05-21
        • 1970-01-01
        • 1970-01-01
        • 2017-12-05
        • 1970-01-01
        • 2021-09-01
        • 2017-04-10
        相关资源
        最近更新 更多