用户连接后,我需要在我的小型 Node 和 Express 应用程序中刷新页面。 我在第二个片段中尝试res.redirect('index.html') ,但是当我尝试连接到根 URL 时会引发错误。 当用户连接到根 URL 时运行以下代码: 我检测到用户何时连接: 提前致谢! ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在学习 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 属性的 function。 您可以使用它们的 ID 获取每个输入的值。 至于服务器端路由,只需使用res.send()
或您想要发送简单响应的任何内容。 在下面的 function 中,收到的响应非常简单。 在您的路线上,如果身份验证失败,只需执行res.send({"status": "failed"})
之类的操作,AJAX 调用将收到该消息,请参阅 (response callback).status 失败并提醒用户,同样如果身份验证成功(只是在 res.send() 调用中将 failed 更改为成功)。 希望这有帮助!
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");
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.