不知道是不是遇到bug了,求大家帮忙
发布于 12 年前 作者 hexie 3676 次浏览 最后一次编辑是 8 年前

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]的时候,理论上,只有一个值,这个值,应该是未定义才对哇。。。

2 回复

只是一个思维误区而已 因为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)

这样,基本算是解决了我刚才遇到的问题,谢谢你的回答

回到顶部