无法从AJAX POST成功函数Express / mySQL

时间:2016-12-08 14:15:54

标签: mysql ajax node.js express

我从客户端发出以下AJAX帖子:

function get_game_id(){
    $.ajax({
         type: "POST",
         url: "/game",
         data: {
             homeTeam: homeTeam,                     
             awayTeam: awayTeam,
             date:date
               },
         cache: false,
         success:function(results){
             alert(results.insertId)
         }
    })
}

上面的警告为空。 在服务器上,我使用以下内容成功地将数据插入到数据库中:

router.post('/', function(req, res) {

console.log(req.body.homeTeam,req.body.awayTeam);

var connection = mysql.createConnection(global.dbSettings);
connection.connect(function(err,res) {


    if (err) {
        console.log(err);
    } else {
        console.log("connected.");

        connection.query(
            "INSERT INTO game(homeTeam,awayTeam,game_date) VALUES (?,?,?)",
            [req.body.homeTeam,req.body.awayTeam,req.body.date],
            function (err, results) {
                if (err) {
                    console.log(err);
                } else {
                    console.log("Game Created with Game_ID:"+results.insertId);
                    console.log(req.body.homeTeam,req.body.awayTeam,req.body.date);

                }
            });


            connection.end(function (err) {
                if (err) {
                    console.log("The connection could not be closed.");
                } else {
                    console.log("The connection is closed.");
                }
            });
    }


             });

       res.end();
});

正确插入数据。 insertId()函数正常工作,result.insertId正在打印到控制台。我无法将它传达给客户。

我在客户端需要这个。我认为它应该可以在成功函数中访问,但所有这些都是“TRUE”。

有人可以,请向我解释如何将此信息发送给客户?

1 个答案:

答案 0 :(得分:0)

您没有收到刚才发送的数据,只是因为您没有发送,而是结束响应。

您可以将其发回req.body内的内容,或者查询刚刚保存的所有内容。 你可以这样做:res.send({homeTeam: req.body.homeTeam, ....}

顺便说一句,你正在做一个“POST”,通过这样做从服务器获取数据是没有意义的。您应该做的是向客户端发送“200”的响应,并可能使用您刚刚保存的数据更新您的页面,因为收到200,您知道数据已保存,因此您不会浪费时间查询/发送背部。你可以这样做:

res.status(200).send('data saved');