首页 > 解决方案 > 提交表单时,使用 javascript 生成的 HTML 文本输入标记不会 POST

问题描述

我有一个表格,询问工作经历,你在哪里申请过大学等。例如,对于他们申请的大学,我一开始有一个文本框,下面有一个按钮,它调用一个 javascript 函数来添加另一个文本输入权在它下面。当我第一次制作这个表单时,我使用了一些不同的数据,然后一旦它们被提交,我就会从中获取它们$_POST并将它们放入数组中,然后将数组的每个元素添加到我的数据库中的相应表中。但是突然之间,我无法再提交表单,并且收到一条消息,告诉我我已尝试获取未指定的索引。但是,当我检查浏览器中的文本输入时,它们的名称是正确的。我读到我应该命名它们college[],以便它们都进入一个数组,但这也没有用....现在呢?

js:

var numcol = 1;
function addnewschool(){
 numcol++;
 var container = document.getElementById("collegecontainer");
 container.appendChild(document.createTextNode(numcol));
 var input = document.createElement("input");
 input.type = "text";
 input.name = 'applied'+numcol;
 container.appendChild(input);
 container.appendChild(document.createElement("br"));}

html:

<p class="text-dark mb-4">List the Colleges you have applied to:<br>
<div id="collegecontainer" name="collegecontainer">
<input type="text" name='applied1'><br>
</div>
<input type="button" id="addcollege" name="addcollege" value="Add College" 
onClick="addnewschool()"><br>
</p>

php:

$applied = array();
foreach($_POST['applied'] as $value){
  array_push($applied, $value);
}

更新:好的,所以我将其更改为另一种方式,但没有奏效,所以我决定复制它的早期版本,它正在工作并将其粘贴到正确的布局中。这很有效......所以现在它已经修复了,我继续添加它。我在一些标签中添加了“必需”,稍微更改了一些样式,并稍微更改了我的 javascript 文件。但现在我遇到了和以前一样的问题。我所有的 POST 数组中只有第一个值。我可以添加什么来改变这一点?有没有人遇到过这样的问题?

标签: javascriptphphtmlinput

解决方案


您不需要为每个输入添加不同的名称。只需applied[]在所有输入名称中使用。

要在 PHP 中获取数组,只需使用$_POST['applied'].

如果您想稍后使用它们中的每一个,您可以使用 a foreach,例如

foreach ($_POST['applied'] as $value) {
    // Do what you want. Retrieve the value using $value
}

或您喜欢的任何其他方法。


推荐阅读