为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2021-10-21 16:04:40
我正在学习 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)。我需要更新数据库而不更新或刷新整个页面,这意味着我不能使用提交表单。相反,实现此目的的最佳方法是什么?
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我通过在客户端使用 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!")

            }

        }

    });

}


查看完整回答
反对 回复 2021-10-21
  • 2 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信