POST数据中未拾取的附加元素


appended elements not picked up in POST data

我有一个包含以下字段的订单页面:

quantity, id, name, language, publisher
在我的php页面上创建了10个字段,代码如下:
<form action="new_order.php" method="POST">
        <fieldset>
          <div id="inputRows"> 
            <div class="controls controls-row">
              <label class="span1">Qty</label>
              <label class="span1">ID</label>
              <label class="span5">Literature</label>
              <label class="span2">Language</label>
              <label class="span2">Publisher</label>
            </div>
            <?php 
            $i = 0;
            //make 10 initial order forms
            for($i; $i <10; $i++) {
              echo "<div class='"controls controls-row'">'r'n";
              echo "<input class='"span1'" type='"text'" id='"quantity'" name='"order[{$i}][quantity]'">'r'n";
              echo "<input class='"span1'" type='"text'" id='"id'" name='"order[{$i}][id]'">'r'n";
              echo "<input class='"span5'" type='"text'" id='"name'" name='"order[{$i}][name]'">'r'n";
              echo "<select class='"span2'" type='"text'" id='"language'" name='"order[{$i}][language]'">'r'n";
              foreach($lang as $k=>$v) {
                echo "<option value='"{$k}'">" . $v . "</option>'r'n";
              }
              echo "</select>'r'n";
              echo "<input class='"span2'" type='"text'" id='"publisher'" name='"order[{$i}][publisher]'">'r'n";
              echo "</div>'r'n";
              echo "'r'n";
            }
            ?>
          </div>
            <input type="button" id="addline" value="Add Another Line" >
            <br /><br /><br />
            <hr />
            <button type="submit" name="submit" class="btn btn-primary" value="order">Add Order</button>
            <button type="submit" name="submit" class="btn" value="cancel">Cancel</button>
          </fieldset>
      </form>

一切都好。表单加载良好。所有的选择都很好。我检查了源代码。

现在,我在顶部有一些jQuery,它允许我添加另一个字段。我将它设置为插入具有相同字段的整行,但为了简单起见,让我们只插入一个文本字段:

$(function() {
  $('#addline').on('click', function() {
    nInput = '<input type="text" name"text1" >';
    $('#inputRows').append(nInput);
  });
});

它可以很好地添加行。没有问题。当我将页面提交给它自己时,原来的10个数组得到了很好的拾取,但是新的字段没有通过。

我正在研究Stack和其他网站,我在某处读到的东西说,这是因为表单已经加载,所以当你添加另一个输入字段时,它不包括作为表单数据的一部分。是这样吗?如果是这样,有没有别的办法?

这是否与我使用。on()函数与。click()函数有关?还是因为它运行在$('document').ready()?在所有东西都加载好之后?

编辑:下面是它提交给的php脚本:

<?php
  require_once("../../includes/initialize.php");
  if(!isset($_SESSION['user_id'])) {
    redirect("login.php");
  }
  if(isset($_POST['submit']) && $_POST['submit' == 'order']) {
    include("html/neworder.html.php");
  }

下面是print_r($_POST),它是从所包含的neworder.html.php文件中调用的:

Array
(
    [order] => Array
        (
            [0] => Array
                (
                    [quantity] => 
                    [id] => 
                    [name] => 
                    [language] => en
                    [publisher] => 
                )
            [1] => Array
                (
                    [quantity] => 
                    [id] => 
                    [name] => 
                    [language] => en
                    [publisher] => 
                )
   //etc... 
            [9] => Array
                (
                    [quantity] => 
                    [id] => 
                    [name] => 
                    [language] => en
                    [publisher] => 
                )
        )
    [submit] => order
)

我以为这是你在php和$_POST['submit'] == 'order'中使用$_POST['submit' == 'order']的事实

另一个facepalm指?

SOLVED:

$(function() {
  $('#addline').on('click', function() {
    nInput = '<input type="text" name"text1" >';
    $('#inputRows').append(nInput);
  });
});

输入字段的名称变量中缺少'='。这就是为什么POST没有把它捡起来。

facepalm指