使用javascript将选中的Chechbox保存到sqlite数据库中

时间:2018-11-21 19:48:56

标签: javascript node.js express checkbox sqlite

我的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)

1 个答案:

答案 0 :(得分:0)

您的server.js文件通常应处理来自表单的posted数据。流程应类似于:

  1. 显示前端表单
  2. 将前端表单数据发布到您的服务器
  3. 操纵或使用服务器上的数据
  4. 将服务器的一些响应发送回前端。

在您的情况下,您可能应该使用存储在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服务器运行的任何终端中)