具有多个提交按钮的多行表不会发布提交数组

时间:2016-07-15 16:23:10

标签: html forms

这是我的“重复”的第二部分:Why does this multiple row table submit by row? Is this correct?

我修改了原始代码:

<tr>
   <td><input type='text' name='first' value='mark'></td>
   <td><button type='submit'name='editbutton' value='1'>Edit</button></td>
</tr>
<tr>
   <td><input type='text' name='first' value='luke'></td>
   <td><button type='submit'name='editbutton' value='2'>Edit</button></td>
</tr>
<tr>
   <td><input type='text' name='first' value='john'></td>
   <td><button type='submit'name='editbutton' value='3'>Edit</button></td>
</tr>

为:

<tr>
   <td><input type='text' name='first[1]' value='mark'></td>
   <td><button type='submit'name='editbutton[1]' value='1'>Edit</button></td>
</tr>
<tr>
   <td><input type='text' name='first[2]' value='luke'></td>
   <td><button type='submit'name='editbutton[2]' value='2'>Edit</button></td>
</tr>
<tr>
   <td><input type='text' name='first[3]' value='john'></td>
   <td><button type='submit'name='editbutton[3]' value='3'>Edit</button></td>
</tr>

在阅读帖子时,我希望看到包含两个主要索引的$ _POST(php)数组:

 ['first'] => Array([1] => 'mark', [2] => 'luke', [3] => 'john'),
 ['editbutton'] => Array([1] => '1', [2] => '2', [3] => '3')

这不是我得到的。 “name”索引已正确构建,但提交按钮索引“editbutton”仅包含一个元素,按下该按钮的值。我想依靠它,但这是正确的还是我再次指望当前服务器的行为?

感谢。对不起,如果我在这里打死马。

2 个答案:

答案 0 :(得分:0)

向表中添加单击事件侦听器。使用JavaScript,将this和兄弟姐妹的值推送到数组并POST它。如果问题涉及事件冒泡。不要忘记在监听器中包含(e)事件arg。

请勿使用input type="submit"的表单。使用vanilla XHR。使用click事件监听器触发它。

  

xhttp.open(“POST”,“ajax_test.asp”,true);

     

xhttp.send(其中 “fname =亨利&安培; L-NAME =福特”);

答案 1 :(得分:0)

关于你的问题,我认为你可以指望它。请参阅http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_button_name页面 表单上提供了两个按钮,但每次提交表单时,服务器端只接收一个值。因此,据我所知,至少PHP和ASP只接受一个提交按钮值。但是从这个问题的接受答案 How $_POST workshttps://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data

我们可以看到它实际上是由浏览器定义的,这意味着从浏览器发出的数据实际上并不包含任何其他提交按钮值。所以我认为我安全地假设所有其他语言都不会收到第二个提交按钮值,因为它从未从您的网络浏览器发送过。