html代码 <html>
<body>
<form name=“input” action="/review" method=“post”>
I have a bike:
<input type=“checkbox” name=“demo” value=“46” checked=“checked” />
<br />
I have a car:
<input type=“checkbox” name=“demo” value=“14” />
<br />
I have an airplane:
<input type=“checkbox” name=“demo” value=“67” />
<br /><br />
<input type=“submit” value=“Submit” />
</form>
<p>如果您点击 “Submit” 按钮,您将把输入传送到名为 html_form_action.asp 的新页面。</p>
</body>
</html>
接下来是我的node.js 服务器端代码
if(method === ‘post’){ photos = req.body.demo;
console.log('length' + photos.length);
console.log('--------------------------');
console.log(req.body);
console.log(req.body.demo);
console.log('error data' + photos[1]);
}
打印信息 length2
{ demo: ‘46’ } 46 error data6
当我提交一个复选框的时候,竟然出现长度2的值, 理论上来说,我选上一个,就这认一个才对,希望各位能帮帮忙。
photos[1]的时候,理论上,只有一个值,这个值,应该是未定义才对哇。。。
只是一个思维误区而已
因为typeof photos == 'string', photos='46'
,所以photos.length=2, photos[1]=6
当checkbox单选,浏览器发送的http请求是:demo=46
,express无法区分这是来自text控件还是checkbox控件的值,于是保守点将demo设为字符串46
当checkbox多选,浏览器发送的http请求是:demo=46&dmeo=14
,express一看就明白,哦,应该将demo设为数组[‘46’,‘14’]
可能是吧,我现在的写法修改了 写成 photos = [] photos.push(req.body.demo)
这样,基本算是解决了我刚才遇到的问题,谢谢你的回答