javascript - 使用node.js/express保存数据到mysql,无需刷新页面

标签 javascript mysql node.js

我正在学习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(); 
                });
              });
});

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

最佳答案

我通过在客户端使用 AJAX POST 请求来完成此操作。 不要让按钮提交表单,而是让它执行带有 onclick 属性的功能。您可以通过 ID 获取每个输入的值。至于服务器端路由,只需使用 res.send() 或任何您想要发送简单响应的内容。在下面的函数中,收到的响应非常简单。在您的路线上,如果身份验证失败,只需执行类似 res.send({"status": "failed"}) 的操作,AJAX 调用就会收到该消息,请参阅 (response callback).status失败并提醒用户,与身份验证成功相同(只是在 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!")
            }
        }
    });
}

关于javascript - 使用node.js/express保存数据到mysql,无需刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58000355/

相关文章:

php - 如何实现搜索2个不同的表数据?

php - 追加两个sql表并导出为Excel文档php

node.js - 使用 Node.js 删除文件

javascript - 仅适用于 Android 设备的网站关闭缩放

php - 外部约束失败

javascript - 如何通过单击 anchor 标记链接到已安装的应用程序?

javascript - NodeJs 中 var x=1 和 x = 1 有什么区别

node.js - 通过 nodejs 进行 Mongodb 并行查询

javascript - AngularJS - ngRepeat 将所选行显示为事件状态

javascript 根据名称分割数组