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

时间:2013-06-19 06:49:02

标签: php javascript jquery

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

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
)

2 个答案:

答案 0 :(得分:1)

我认为您在php和$_POST['submit' == 'order']

中使用$_POST['submit'] == 'order'这一事实

另一个facepalm?

答案 1 :(得分:0)

求助:

$(function() {

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

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

捂脸