猿问

使用node.js/express将数据保存到mysql而不刷新页面

我正在学习 node.js 并且我已经设法通过表单提交将数据保存到 mysql 中。代码如下所示:


    app.post('/auth', function(request, response) { 

    let date = request.body.date;

    let user = request.body.user;

    let email = request.body.email;

    connection.connect(function(err) {

                if (err) throw err;

                console.log("Connected!");

                var sql = "INSERT INTO demotable (date, user, email) VALUES (?,?,?)"; 

                connection.query(sql, [date, user, email], function (err, result) {

                  response.end(); 

                });

              });

});

这有效并且数据被添加到表中,但是因为我使用 input submit 之后它会将我带到一个新页面 (/auth)。我需要更新数据库而不更新或刷新整个页面,这意味着我不能使用提交表单。相反,实现此目的的最佳方法是什么?


扬帆大鱼
浏览 249回答 2
2回答

人到中年有点甜

我通过在客户端使用 AJAX POST 请求来完成此操作。与其让按钮提交表单,不如让它执行具有 onclick 属性的功能。您可以使用 ID 获取每个输入的值。至于服务器端路由,只需使用res.send()或发送简单响应的任何内容即可。在下面的函数中,收到的响应非常简单。在您的路线上,如果身份验证失败,只需执行类似操作res.send({"status": "failed"})并且 AJAX 调用将收到该消息,请查看(响应回调)。状态失败并提醒用户,与身份验证成功相同(只是在res.send() 调用)。希望这有帮助!function authenticate() {    $.ajax({        type: "POST",        url: "/auth",        data: {            "date": Date.now(),            "user": document.getElementById('usernameInput').value,            "email": document.getElementById('emailInput').value        },        success: function(data) {            if(data.status == "success") {                alert("successfully authenticated!")            } else if(data.status == "failed") {                alert("failed authentication!")            }        }    });}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答