读取复选框值Node JS + Express + Jade

时间:2014-01-07 07:02:05

标签: node.js express pug

我正在使用Node JS + Express + Jade将网页值插入到Mongo DB中。 我需要插入True或False,具体取决于是否启用了复选框。

在我的 router.js 中,我有以下内容:

app.get('/notification', function(req, res) {
    res.render('notification', {  title: 'Nueva notificacion', notifications : NT });
});

app.post('/notification', function(req, res){
    console.log('Adding new notification');
    AM.addNewNotification({
        name    : req.param('name'),
        notification : req.param('notification'),
        active  : req.param('active')
    }, function(e){
        if (e){
            res.send(e, 400);
        }   else{
            res.send('ok', 200);
        }
    });
});

在我看来,我有以下内容:

.controls
                    label#active-me.checkbox Active
                        input(type="checkbox", name="active", id="active",checked='checked')

但是我无法插入它,看起来没有采取值。 仅插入名称和通知值(文本)。

{ "name" : "Goodbye world", "notification" : "Short Message Service", "_id" : ObjectId("5298f603bd07b80376000005") }

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:2)

浏览器会在复选框时为复选框添加复选框的值。有几种方法可以在服务器上处理此行为。

最明显的是将参数缺失视为错误。

另一种方式是Rails的作用:在复选框之前添加一个具有相同名称和零值的隐藏输入。在你的情况下:

.controls
  label#active-me.checkbox Active
  input(type="hidden", name="active", value=0)
  input(type="checkbox", name="active", id="active",checked='checked')

此外,app.post中的代码可能应该使用req.body,而不是req.param

答案 1 :(得分:1)

.controls label#active-me.checkbox Active input(type="checkbox", name="checkedboxes[]",checked='true')

这将在req.body

中为您提供一系列复选框