我正在学习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/