为什么html复选框只传输'on'值?

Goo*_*gle 11 html checkbox

我刚开始学习网络编程.

在玩了复选框之后,我发现了一个困难的方法,即只有在选中复选框时它才会发送'on'值.

为什么不发送"关闭"值?

Udi*_*Udi 19

可以有许多具有相同元素名称的复选框:

<form action="order.php" method="get">

  <p>
    <label><input type="checkbox" name="toppings" value="olives"/>Olives</label>
    <label><input type="checkbox" name="toppings" value="mushrooms"/>Mushrooms</label>
    <label><input type="checkbox" name="toppings" value="onions"/>Onions</label>
    <label><input type="checkbox" name="toppings" value="eggplant"/>Eggplant</label>
    etc...
  </p>

  <p><input type="submit" value="Submit"/></p>

</form>
Run Code Online (Sandbox Code Playgroud)

该网址稍后将仅包含已检查的值,并且类似于:

order.php?toppings=mushrooms&toppings=onions&toppings=eggplant
Run Code Online (Sandbox Code Playgroud)

如果发送"关闭"值,这将无法正常工作.


Ale*_*x C 9

我认为必须简化传输.如果你有一个包含数千个复选框的页面,那么对服务器的每个请求都是"通过网络"发送的,你会发现告诉服务器"这个盒子关闭"的数据量实际上相当大(见就像你必须发送每个复选框元素的名称一样 - 这可能会增加多达兆字节的信息 - 这会降低整个用户体验和互联网的速度.

事实上,你知道它因为没有被发送而被关闭 - 所以没有必要发送它.

  • 我不同意这个答案.对开发人员(imho)的好处将大大超过通过网络发送额外数据的成本.首先,它将HTML显示与处理页面(我认为是最大的争论)非常相关.第二,我想(这只是一个猜测),大多数页面只使用更合理数量的复选框,比如10或更少,这个数据量可以忽略不计. (8认同)