Node.js/Express如何修改checkbox表单输入获取的数据

Node.js/Express how to modify data obtained from checkbox form input

我有一个使用把手呈现的输入复选框元素列表

<form method="POST" action='/processImages'>
                        <input type='checkbox' id='.DS_Store' name='.DS_Store' />
                            <p>.DS_Store</p>
                        <input type='checkbox' id='.localized' name='.localized' />
                            <p>.localized</p>
                        <input type='checkbox' id='Courses' name='Courses' />
                            <p>Courses</p>
                        <input type='checkbox' id='Home' name='Home' />
                            <p>Home</p>
                    
<input type="submit" value="run">
         

并且我想将名称传递给其他函数或在其他路径上呈现它们的名称 使用此代码:

const processRouter = express.Router()

const processRouter = express.Router()
processRouter.post('/', async (req, res, next) => {
    const test =(req.body) 
    res.send(test)
})

app.use('/processImages', processRouter)

我得到的是:

{"课程":"on","主页":"on"}

但我只想获取名称,如{"Courses", "Home"} 如何摆脱每个元素上的这个“on”,我假设这是来自输入类型复选框。

我是初学者,我真的不明白我应该如何只请求“名称”。 谢谢

不可能得到 {"Courses", "Home"} 因为这是无效的 JSON 格式。但是,您可以改为通过请求传递数组 ["Courses", "Home"]

如果您的表单发送的请求不是您想要的 - 考虑编写您自己的 onSubmit 函数来处理 AJAX 调用。


尽管如此,您是否有特殊原因想要修改请求?您可以解析原始格式以得到您想要的结果:

function iterate(input) {
    //Example input: {"Courses":"on","Home":"on"}

    const arr = [];

    Object.entries(input).forEach(function ([key, value], index) {
        console.log(key, value, index);
        if (value === "on")
            arr.push(key);
    });

    return arr;
}

console.log(iterate({ "Courses": "on", "Home": "on" }));
console.log(iterate({ "Courses": "on", "Home": "off" }));