我正在尝试将动态创建的表单字段传递给php脚本,这让我头疼不已。
我过去曾多次这样做过,我无法弄清楚我在这里做错了什么。
下面是一个正在发生的事情的例子:
简要说明:我有一个带有textarea的表单,有一个名为“Add More”的按钮,点击后,会通过javascript生成一个新的textarea。 textareas值被推入名为“comments”的数组中。当我尝试在我的php脚本中循环遍历这个数组时,它只给我第一个项目,而不是动态创建的项目。
HTML
<form action="" method="post" enctype="multipart/form-data" accept-charset="utf-8">
<textarea name="comments[]"></textarea>
<a href="javascript: return null;" class="add-more">Add More</a>
</form>
JS
$(".add-more").click(function(){
var new_field = '<textarea name="comments[]"></textarea>';
$(this).before(new_field);
});
PHP - 这就是问题所在,当我尝试遍历comments []数组时,它只给我第一个,并且不会带来任何动态生成的。
<?php
$comments = $_POST['comments'];
$commentString = "";
foreach($comments as $value) {
$commentString .= $value;
}
?>
所以如上所述,如果我使用“Add More”按钮创建5个textareas,在每个文本中输入一些文本,然后提交表单,动态创建的字段都不会发送到php。
有人可以帮忙吗?
谢谢!
答案 0 :(得分:4)
<form action="" method="post" />
应该是:
<form action="" method="post">
答案 1 :(得分:0)
另一个答案是正确的,但您也需要关闭表单。您的代码缺少结束“&gt;”同样。
<form action="" method="post" >
<textarea name="comments[]"></textarea>
<a href="javascript: return null;" class="add-more">Add More</a>
</form>
答案 2 :(得分:0)
此外,JS中的类名与HTML中的类名不匹配。
这一切都在一起工作:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<form action="" method="post">
<textarea name="comments[]"></textarea>
<a href="javascript: return null;" class="add-more">Add More</a>
<input type="submit" />
</form>
<script>
$(".add-more").click(function(){
var new_field = '<textarea name="comments[]"></textarea>';
$(this).before(new_field);
});
</script>
<?php
$comments = $_POST['comments'];
$commentString = "";
foreach($comments as $value) {
$commentString .= $value;
}
echo $commentString;
?>
</body>
</html>