Javascript 使用node.js/express将数据保存到mysql,无需刷新页面
我正在学习node.js,我已经通过表单提交将数据保存到mysql中。代码如下所示:Javascript 使用node.js/express将数据保存到mysql,无需刷新页面,javascript,mysql,node.js,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) {
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。我需要在不更新或刷新整个页面的情况下更新数据库,这意味着我不能使用提交表单。实现这一点的最佳方法是什么?我通过在客户端使用AJAX POST请求来实现这一点。 与其让按钮提交表单,不如让它执行具有onclick属性的函数。您可以使用每个输入的ID获取它们的值。至于服务器端路由,只需使用res.send或任何您希望发送简单响应的命令。在下面的函数中,收到的响应非常简单。在您的路径上,如果身份验证失败,只需执行res.send{status:failed}之类的操作,AJAX调用就会收到该消息,请查看响应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!")
}
}
});
}
我使用了bobmartin1234提供的代码。在服务器端,我编写了以下代码:
app.post('/auth', function(request, response) {
let user = request.body.user
let email = request.body.email;
let date = new Date(); //I added the date on the serverside instead
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) {
if (err) throw err;
console.log("1 record inserted");
});
});
});
如果您不想导航到新页面或重新加载现有页面,则可能需要使用ajax post而不是表单提交来完成此操作@dusthaines-这不是一个JQuery问题,你为什么这样对待它?非常感谢你的帮助!我用了这个,效果很好。如果你有一个有效的例子,学习总是容易得多。