【问题标题】:How to deal with many input fields with the same name, and post to PHP?如何处理多个同名的输入字段,并发布到PHP?
【发布时间】:2015-10-31 17:04:57
【问题描述】:

假设我有一个看起来像这样的 HTML 结构。每个 left-context-field 和 right-context-field 都是相关的,并且在后端应该可以将左侧链接到其右侧同事。

<table>
  <tbody>
    <tr>
      <td>
        <input type="text" class="left-context-field" value="First left value">
      </td>
      <td>
        <input type="text" class="right-context-field" value="First right value">
      </td>
    </tr>
    <tr>
      <td>
        <input type="text" class="left-context-field" value="Second left value">
      </td>
      <td>
        <input type="text" class="right-context-field" value="Second right value">
      </td>
    </tr>
    <tr>
      <td>
        <input type="text" class="left-context-field" value="Third left value">
      </td>
      <td>
        <input type="text" class="right-context-field" value="Third right value">
      </td>
    </tr>
    <tr>
      <td>
        <input type="text" class="left-context-field" value="Fourth left value">
      </td>
      <td>
        <input type="text" class="right-context-field" value="Fourth right value">
      </td>
    </tr>
  </tbody>
</table>

用户可以添加任意数量的额外行。我将如何将值发布到 PHP 文件?

我是否应该将所有行包装成一个巨大的表格,然后调用.serializeArray()?还是每行一个表格?

从面向数据的方法来看,处理这个问题的最佳方法是什么?我会将数据发送到后端,但我想让后端开发人员尽可能轻松地访问数据。

【问题讨论】:

  • 我已经编辑了 meda 的答案,但他不批准该编辑,所以我发布了一个新答案。

标签: php jquery data-oriented-design


【解决方案1】:

我已经编辑了 meda 的答案,但他不批准该编辑,所以我再次在这里发布。

在 HTML 表单中,发送数组的方式是使用括号。

例如

name="values[]"

像这样。

<form name = 'vals_form' action = 'php_page.php' method = 'post'>
  <table>
    ... <!-- Your all code -->
    <tr>
      <td>
        <input type="text" class="left-context-field" value="First left value" name="values[]">
      </td>
      <td>
        <input type="text" class="right-context-field" value="First right value" name="values[]">
      </td>
    </tr>
    ...
    <input type = 'submit' value = 'Post Values' />  
  </table>
</form> <!--and close the form tag-->

在 PHP 中,您可以返回数组

$values = $_POST['values'];

【讨论】:

  • 注意:显然只包装行是无价值的。您必须将整个表格包装在表格中。但是您现在如何将表单发送到 PHP?
  • form's attribute action 指定单击Post Values 按钮时该form 应该去哪里。在这种情况下,它将发布到action = 'php_page.php' --- php_page.php。确保你在form 中添加了一个按钮来发送这个form 属性type = submit,否则你将不得不使用jQuerypost 东西到后端
【解决方案2】:

在 HTML 表单中,发送数组的方式是使用括号。

例如

name="values[]"

像这样。

<form name = 'vals_form' action = 'php_page.php' method = 'post'>
  <table>
    ... <!-- Your all code -->
    <tr>
      <td>
        <input type="text" class="left-context-field" value="First left value" name="values[]">
      </td>
      <td>
        <input type="text" class="right-context-field" value="First right value" name="values[]">
      </td>
    </tr>
    ...
    <input type = 'submit' value = 'Post Values' />
  </table>
</form> <!--and close the form tag-->

在 PHP 中,您可以返回数组

$values = $_POST['values'];

【讨论】:

  • 然后您将如何将这些表单发布到 PHP?
  • 您需要在table 周围创建一个form 标签,并需要在button click 上发布该form
  • @MubinKhalid 从语义 HTML 的角度来看,最好包装整个表格还是只包装所有行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 2010-10-03
  • 2012-09-25
  • 2014-10-30
  • 1970-01-01
相关资源
最近更新 更多