Javascript 在表单中动态添加输入(在PHP中无法获取值)

Javascript 在表单中动态添加输入(在PHP中无法获取值),javascript,php,jquery,html,Javascript,Php,Jquery,Html,我有一个巨大的表格,里面有一张桌子。当用户按下某个按钮并尝试在PHP中捕获所有这些值时,我使用jQuery添加该表的行 但是除了表的第一行,我不能得到其他值 得到 未定义索引:分类#2 当我试图通过$\u POST['categorie#2'] HTML如下所示: <form> ...[some working inputs] <table id="matos" class="table table-responsive synthese">

我有一个巨大的表格,里面有一张桌子。当用户按下某个按钮并尝试在PHP中捕获所有这些值时,我使用jQuery添加该表的行

但是除了表的第一行,我不能得到其他值

得到

未定义索引:分类#2

当我试图通过
$\u POST['categorie#2']

HTML如下所示:

<form>
  ...[some working inputs]
<table id="matos" class="table table-responsive synthese">
              <thead>
                <tr>
                  <th>Matériel</th>
                  <th>Fournisseur</th>
                  <th>Numéro de série</th>
                  <th>Catégorie</th>
                  <th>Description</th>
                  <th>Date d'achat</th>
                  <th>Etat</th>
                </tr>
              </thead>
              <tbody>
                <tr class="" id="ligne#1">
                  <td><input type="text" name="materiel#1" id="materiel#1" class="form-control" value=""></td>
                  <td>
                      <select name="fournisseur#1" id="fournisseur#1" class="form-control" value="">
                          <?php
                            $list = listing_fournisseurs();
                            foreach ($list as $key => $value) 
                            {
                              echo '<option value='.$key.'>'.$value.'</option>';
                            }

                            ?>
                      </select>
                  </td>
                  <td><input type="text" name="num_serie#1" id="num_serie#1" class="form-control" value=""></td>
                  <td>
                      <select name="categorie#1" id="categorie#1" class="form-control" value="">
                          <?php

                            $list = listing_categories();
                            foreach ($list as $key => $value) {
                              echo ' <option value='.$key.'>'.$value.'</option>';
                            }
                          ?>
                      </select>
                  </td>
                  <td><input type="text" name="description_materiel#1" id="description_materiel#1" class="form-control" value=""></td>
                  <td><input type="text" name="buy_date#1" id="buy_date#1" class="date form-control" value=""></td>
                  <td>
                    <select name="etat#1" id="etat#1" class="form-control" value="">
                      <?php

                            $list = listing_etats();
                            foreach ($list as $key => $value) {
                              echo ' <option value='.$key.'>'.$value.'</option>';
                            }
                          ?>
                    </select>
                  </td>
                </tr>
              </tbody>
            </table>
我读过一些问题,如果表格中没有表格,表格就不起作用。。。但就我而言,他们是。。。怎么了?

var opt_fourniseurs='ggdd';
var opt_fournisseurs = '<option value="gg">gg</option><option value="dd">dd</option>';
              var opt_categories = '<option value="ss">ss</option><option value="aa">aa</option>';
              var opt_states = '<option value="ww">ww</option><option value="ee">ee</option>';

              var num= parseInt($('#matos tr:last').prop("id").split('#')[1])+1;

$('#matos tr:last').after('<tr id="ligne#'+num+'">'+
                            '<td><input type="text" name="materiel#'+num+'" id="materiel#'+num+'" class="form-control" value=""></td>'+
                            '<td><select name="fournisseur#'+num+'" id="fournisseur#'+num+'" class="form-control" value="">'+
                              opt_fournisseurs+
                            '</select></td>'+
                            '<td><input type="text" name="num_serie#'+num+'" id="num_serie#'+num+'" class="form-control" value=""></td>'+
                            '<td><select name="categorie#'+num+'" id="categorie#'+num+'" class="form-control" value="">'+
                              opt_categories+
                            '</select></td><td><input type="text" name="description_materiel#'+num+'" id="description_materiel#'+num+'" class="form-control" value=""></td>'+
                            '<td><input type="text" name="buy_date#'+num+'" id="buy_date#'+num+'" class="date form-control" value=""></td>'+
                            '<td><select name="etat#1" id="etat#1" class="form-control" value="">'+
                               opt_states+
                            '</select></td></tr>');
$('#nbLignes').val(num);
var opt_categories='ssaa'; var opt_states='wwee'; var num=parseInt($('#matos tr:last').prop(“id”).split('#')[1])+1; $('matos tr:last')。在('+ ''+ ''+ 福尼塞尔斯酒店+ ''+ ''+ ''+ opt_类别+ ''+ ''+ ''+ opt_州+ ''); $('#nbLignes').val(num);

马特里尔
福尼瑟
纳梅罗·德·塞里
凯蒂戈里酒店
描述
大枣
埃塔特
一
二
1.
2.
1a
2a

这是根据您提供的代码创建的示例,它对我有用。

我的坏消息!我把我的DOM结构搞砸了。。。 你不应该在你的
结束之前关闭一个div,这就是为什么

不起作用:

<div id="some_div">
  <form>
    [Some inputs...]
</div><!-- /some_div -->
  </form>
<div id="some_div">
  <form>
    [Some inputs...]
  </form>
</div><!-- /some_div -->

[一些投入…]
应该有效:

<div id="some_div">
  <form>
    [Some inputs...]
</div><!-- /some_div -->
  </form>
<div id="some_div">
  <form>
    [Some inputs...]
  </form>
</div><!-- /some_div -->

[一些投入…]

看起来很明显,但当您拥有非常大的DOM时就不是了;)

如果您使用此命名约定而不是
,您的生活将变得更加轻松

这样,您将在PHP端的数组中获得变量,这使得遍历数据变得更加容易

例如:



如果您检查jquery添加的装备名称输入框,您会得到什么?当您转储(
var\u dump()
)时会发生什么?你看到默认情况下没有的任何其他类别或值吗?打印你的$\u帖子,你就会知道怎么了。是的,我有所有的“#1”,但我得到了错误
未定义索引:[nameOfInput]#NumberOfLine
,用于其他行。。。好像数据不会send@Seba99其优点是,您不必跟踪数字(
分类1
装备2
)等。它只需将所有具有该名称的内容转换为具有索引的数组。看看这个答案,可以得到一个清晰的用法示例:嗯,它对我也有用。。。x) 但是我的DOM有点复杂。。。我想发布我的全部源代码,但是有没有一种方法可以在一些JS操作(比如tab中的新行)之后获取源代码,因为使用CTRL+U我只获得JS操作之前的内容。。。通过chrome inspector,我得到了很多
::after
::after
我应该发布我的DOM吗?是的,这是@Bono在文章中说的,但这不是真正的问题,不管怎样,好的建议:)
<?php
foreach($_POST['categories'] as $num => $value){

}
?>