我的ejs中有一个带有多个复选框的表单。在应用程序中,用户应该能够通过选中复选框来选择自己的兴趣,并且应该将其保存到sqlite数据库表中。 我正在通过引导程序建立表:
db.exec('CREATE TABLE interests(interest text)');
(不确定要选择哪种类型,所以我将其设置为“文本”,但这可能是错误的吗?)。 我的表格看起来像这样
<form name="first_steps" action="first_steps" method="post">
<ul>
<li>
<input type="checkbox" name="interesse" value="theater" id="check1">Theater</label>
</li>
<li>
<input type="checkbox" name="interesse" value="musik" id="check2">Musik</label>
</li>
<li>
<input type="checkbox" name="interesse" value="party" id="check3">Party</label>
</li>
<li>
<input type="checkbox" name="interesse" value="sport" id="check4">Sport</label>
</li>
</ul>
<input type="submit" value="submit">
我找到了这篇文章Save result checkboxes checked in form into sqlite database with javascript,并试图将其转换为我的server.js
(这样的事情
app.post('/first_steps', function(req, res) {
var elementen = document.getElementsByName ("interesse");
var tmpChoise;
for (var r= 0; r < elementen.length; r++) {
if (elementen[r].checked) {
tmpChoise = elementen[r].value;
alert(tmpChoise);
db.run(`INSERT INTO interessen(interesse) VALUES (?)`, [interesse], function(err) {
return res.redirect('/profil');
});
}
}
});
但这不起作用。它显示“ ReferenceError:未定义文档”。
有人可以告诉我正确的代码是什么样子吗?我是个流血的初学者,真的无法解决任何问题。
(JavaScript,express,sqlite3,node.js)
答案 0 :(得分:0)
您的server.js文件通常应处理来自表单的posted数据。流程应类似于:
在您的情况下,您可能应该使用存储在document.getElementsByName ("interesse")
上的数据,而不是尝试查看由res.body
产生的DOM元素。所以看起来可能像这样:
app.post('/first_steps', function(req, res) {
data = req.body.interesse;
db.run(`INSERT INTO interessen(interesse) VALUES (?)`, [data], function(err) {
return res.redirect('/profil');
});
}
}
});
或类似的东西。查阅this文章,获取获取张贴数据的示例,然后在控制台日志中查看从表单中张贴的数据,如
var postBody = req.body;
console.log(postBody);
(该控制台日志输出将在您的Express服务器运行的任何终端中)