我有一个包含以下字段的订单页面:
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'
又一个捂脸?
关于php - POST 数据中未拾取附加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17184596/