【问题标题】:AXIOS POST return resultAXIOS POST 返回结果
【发布时间】:2020-11-09 07:48:03
【问题描述】:

我创建了一个非 JWT api 调用并且它可以工作。我添加 JWT verifyToken 的那一刻它可以工作,但我似乎无法从 AXIOS POST 获取返回结果集。

Function 2 --> /userget ----is working 我可以在 HTML 上显示结果

Function 7 ---> /api/userget ---它可以获取数据和令牌,但我无法在 HTML 上显示,它转到“错误响应”

++++++++++++++++++++++++++++++++++

function myFunction2() {
    console.log("Going2");
    var userid = document.getElementById("userid").value;
    console.log(userid);
    axios( {
        method: 'post',
        url:'http://localhost:8081/userget',
        data : {
            userid : userid
          }
      })
    .then(function (response) {
        console.log(response.data.result[0].username );
        var userid = JSON.stringify(response.data.result[0].userid);
        var username = JSON.stringify(response.data.result[0].username);
        var email = JSON.stringify(response.data.result[0].email);

        var userid = JSON.parse(userid);
        var username = JSON.parse(username);
        var email = JSON.parse(email);
        var displaydata = ("User ID : " + userid + "<br><br>Name : " + username + "<br><br>Email :" + email);
        document.getElementById("demo").innerHTML = displaydata;
        })
    .catch(function (error) {
        document.getElementById("demo").innerHTML = "Bad response";
        });
    }

++++++++++++++++++++++++++++++++++++

function myFunction7() {
    console.log("Going7");
    var userid = document.getElementById("userid").value;
    console.log(userid);
    console.log("Print local token == " + localStorage.getItem("token"));
    var msgtxt = localStorage.getItem("token");
    axios( {
        method: 'post',
        url:'http://localhost:8081/api/userget',
        headers: {
            'Authorization': `Bearer ${msgtxt}` 
          },
        data : {
            userid : userid
          }
      })
    .then(function (response) {
        console.log(response.data.result[0].username );
        var userid = JSON.stringify(response.data.result[0].userid);
        var username = JSON.stringify(response.data.result[0].username);
        var email = JSON.stringify(response.data.result[0].email);

        var userid = JSON.parse(userid);
        var username = JSON.parse(username);
        var email = JSON.parse(email);
        var displaydata = ("User ID : " + userid + "<br><br>Name : " + username + "<br><br>Email :" + email);
        document.getElementById("demo").innerHTML = displaydata;
        })
    .catch(function (error) {
        document.getElementById("demo").innerHTML = "Bad response";
        });
    }

++++++++++++++++++++++++++++++++

app.post('/userget', function (req, res) {
const userid = req.body.userid;
console.log ("User id == " + userid)
user.getUser(userid, function (err, result) {
    if (!err) {
        console.log(result)
        res.send({result})
      
    } else{
        res.send(err.errno + " No record");
    }
    res.end()
});

});

++++++++++++++++++++++++

app.post('/api/userget', verifyToken, (req, res) => { 
const userid = req.body.userid;
console.log ("User id == " + userid)
jwt.verify(req.token, secretKey, (err, authData) => {
  if(err) {
    res.sendStatus(403);
  } else {
    user.getUser(userid, function (err, result) {
        if (!err) {
            console.log(result)
            res.send({result})
          
        } else{
            res.send(err.errno + " No record");
        }
        res.end()
    });
    res.json({
      message: 'Post created...',
      authData : authData
    });
  }
});

});

终端错误 /home/ronaldtan/Programming/webservices/node_modules/mysql/lib/protocol/Parser.js:437 抛出错误; // 重新抛出非 MySQL 错误 ^

错误:发送后无法设置标头。 在 validateHeader (_http_outgoing.js:491:11) 在 ServerResponse.setHeader (_http_outgoing.js:498:3) 在 ServerResponse.header (/home/ronaldtan/Programming/webservices/node_modules/express/lib/response.js:771:10) 在 ServerResponse.send (/home/ronaldtan/Programming/webservices/node_modules/express/lib/response.js:170:12) 在 ServerResponse.json (/home/ronaldtan/Programming/webservices/node_modules/express/lib/response.js:267:15) 在 ServerResponse.send (/home/ronaldtan/Programming/webservices/node_modules/express/lib/response.js:158:21) 在/home/ronaldtan/Programming/webservices/controller/app.js:170:17 在查询。 (/home/ronaldtan/Programming/webservices/model/user.js:44:32) 在查询。 (/home/ronaldtan/Programming/webservices/node_modules/mysql/lib/Connection.js:526:10) 在 Query._callback (/home/ronaldtan/Programming/webservices/node_modules/mysql/lib/Connection.js:488:16)

【问题讨论】:

  • 控制台出现错误。

标签: javascript node.js json axios jwt


【解决方案1】:

问题如下:

user.getUser(userid, function (err, result) {
    if (!err) {
        console.log(result)
        res.send({
            result
        })

    } else {
        res.send(err.errno + " No record");
    }
    res.end()
});
res.json({
    message: 'Post created...',
    authData: authData
});

第二条语句 (res.json(...)) 在异步操作 user.getUser(..) 完成之前执行。因此,一旦它的回调被执行,res.json 将已经完成,并且由于您再次尝试res.sendres.json 在后台执行相同的操作)您会收到错误。

您似乎可以删除 res.json(...) 语句,因为您想返回找到的用户,而不是有关创建帖子的一些信息。

【讨论】:

    猜你喜欢
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2021-05-15
    相关资源
    最近更新 更多