首页 > 解决方案 > Axios 回调函数在 put 方法中不起作用

问题描述

我正在尝试使用 Axios 更新 MySQL 数据库。我的问题是数据更新成功,但 axios 回调不起作用。而发布,删除和回调工作完美。这是我在下面给出的代码:

前端代码:

 UpdateTeacher = (id) =>{
      const editedata = {
        id: id,
        fname: this.state.fname,
        lname: this.state.lname,
        roles: this.state.roles,
        join_date: this.state.join_date,
        email: this.state.email,
        assign_subject: this.state.assign_subject
      };
    
     axios.put(`http://localhost:3001/edit/${id}`, editedata)
      .then((res) => {
        // I cant get any console.log neither any state set here
        this.setState({
          success: "Update data Successfully!", 
          type:"success",
          isEdit:false
        });
       
        console.log(res.data.json);
      }).catch((err) => {
        console.log(err);
        this.setState({ 
            error: "Error! Please try again later!", 
            type:"error"
        });
      })
  }

后端代码:

app.put("/edit/:id", (req, res) => {

    const {id }       = req.params.id;
    const fname     = req.body.fname;
    const lname     = req.body.lname;
    const roles     = req.body.roles;
    const joining   = req.body.join_date;
    const email     = req.body.email;
    const assign_subject  = req.body.assign_subject;
    
   var updateData = req.body;
   console.log(updateData);
 
db.query(`UPDATE teacher SET fname=?, lname=?, roles=?, join_date=?, email=?, assign_subject=? WHERE id=?`,[fname, lname, roles,joining,email,assign_subject, req.params.id]),(err,result)=>{

    if (err) return console.error(err.message);
    res.status(200).send(results);
    console.log("Updated Row(s):", results.affectedRows);
}
});

标签: node.jsreactjsexpressaxiosresponse

解决方案


这里有一些问题可能会导致问题。在您的服务器代码中,您必须在发生错误时返回响应,否则服务器将挂起。

像这样的东西:

if (err) return res.status(500).send(err.message);

此外,您正在发送,但您在回调中results声明的变量是. 所以代码应该是db.queryresult

res.status(200).send(result);
console.log("Updated Row(s):", result.affectedRows);

第三,在您正在登录的客户端代码中console.log(res.data.json),但我认为这应该是公正的console.log(res.data)


推荐阅读