提问者:小点点

用javascript将checked Chechbox保存到sqlite数据库中


我的ejs中有一个带有几个复选框的表单。在应用程序中,用户应该能够通过选中复选框来选择他的兴趣,这应该保存到sqlite数据库表中。我正在通过bootstrap构建表:

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">

null

我发现这篇文章用javascript将结果复选框保存到sqlite数据库中,并尝试将其转换到我的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:document is not defined”)。

有人能告诉我正确的代码是什么样子的吗?我是个新手,什么都想不出来。

(Javascript、express、sqlite3、Node.js)


共1个答案

匿名用户

server.js文件通常应该工作从表单发布的数据。进程应该类似于:

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

在您的情况下,不应该尝试查看从document.getElementsByName(“interesse”)中生成的DOM元素,而应该使用存储在res.body中的数据。这样看起来就像:

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');
        });
  }
 } 
});

或者类似的东西。查看本文获取post数据的示例,然后查看从您的表单发布到控制台日志中的数据,如

 var postBody = req.body;
 console.log(postBody);

(控制台日志输出将位于运行express服务器任何终端中)