Javascript 当我没有';我不知道要抓住的所有变量
我有一个表单,用户可以添加额外的行(使用javaScript),但是当单击save按钮时,如何获取新数据以分配给变量 现在发生的情况:用户添加新行,单击保存,这些行将与数据一起从页面中消失 这是我的html:Javascript 当我没有';我不知道要抓住的所有变量,javascript,php,Javascript,Php,我有一个表单,用户可以添加额外的行(使用javaScript),但是当单击save按钮时,如何获取新数据以分配给变量 现在发生的情况:用户添加新行,单击保存,这些行将与数据一起从页面中消失 这是我的html: <table id="desc_table" class="form"> <tbody id="desc_tbody"> <tr id="headings"> <td><font&
<table id="desc_table" class="form">
<tbody id="desc_tbody">
<tr id="headings">
<td><font><h3>Description</h3></font></td>
<td><font><h3>Hours</h3></font></td>
<td><font><h3>Rate</h3></font></td>
<td><font><h3>Amount</h3></font></td>
<td></td>
</tr>
<tr>
<td><input name="desc1" type="text" value="<?php echo $desc1; ?>"></td>
<td> <input name="desc_hr1" type="text" value="<?php echo $desc_hr1; ?>"></td>
<td> <input name="desc_rt1" type="text" value="<?php echo $desc_rt1; ?>"></td>
<td><input name="desc_amt1" type="text" value="<?php echo $desc_amt1; ?>"></td>
<td><input type="button" value="X" name="delete" class="btnDelete" onclick="deleteLine(this)"></td>
</tr>
<tr>
<td><input name="desc2" type="text" value="<?php echo $desc2; ?>"></td>
<td> <input name="desc_hr2" type="text" value="<?php echo $desc_hr2; ?>"></td>
<td> <input name="desc_rt2" type="text" value="<?php echo $desc_rt2; ?>"></td>
<td><input name="desc_amt2" type="text" value="<?php echo $desc_amt2; ?>"></td>
<td><input type="button" value="X" name="delete" class="btnDelete" onclick="deleteLine(this)"></td>
</tr>
<tr>
<td><input name="desc3" type="text" value="<?php echo $desc3; ?>"></td>
<td> <input name="desc_hr3" type="text" value="<?php echo $desc_hr3; ?>"></td>
<td> <input name="desc_rt3" type="text" value="<?php echo $desc_rt3; ?>"></td>
<td><input name="desc_amt3" type="text" value="<?php echo $desc_amt3; ?>"></td>
<td><input type="button" value="X" name="delete" class="btnDelete" onclick="deleteLine(this)"></td>
</tr>
</tbody>
</table>
<div>
<center><input type="button" value="Add New Line" id="add_btn" name="add_btn" onclick="newLine()"></center>
</div>
当使用POST捕获页面变量时,如何找到新行变量来声明它们并捕获数据?使用数组样式名称,而不是增加每行的后缀:
<tr>
<td><input name="desc[]" type="text" value="<?php echo $desc; ?>"></td>
<td> <input name="desc_hr[]" type="text" value="<?php echo $desc_hr; ?>"></td>
<td> <input name="desc_rt[]" type="text" value="<?php echo $desc_rt; ?>"></td>
<td><input name="desc_amt[]" type="text" value="<?php echo $desc_amt; ?>"></td>
<td><input type="button" value="X" name="delete" class="btnDelete" onclick="deleteLine(this)"></td>
</tr>
放入隐藏输入,然后将其值设置为默认显示的行数。添加或删除行时,使用JavaScript更新值。提交后,您可以在循环中使用此值
然而,最简单和最合适的解决方案是只使用表单数组。例如,为什么不将每个输入名称称为“desc[]”?然后使用数组索引计算行的位置/数量等。您可以有1个或1000个名为…的输入,我看不到任何php。什么是php帖子?您的保存处理程序在哪里?刚刚添加了变量声明。这就是你要找的吗?下面我将把数据添加到mySQL数据库中。我想到的一个解决方案是将该表的行数放入一个全局变量中。这有意义吗?如果是的话,我会怎么做?在JavaScript中还是在php中?然后我可以做一个循环来收集变量。也许可以使用动态数组?好的-谢谢,我会研究JSON…可能是我最好的选择。谢谢!我正在尝试你的解决方案。请原谅我-我还在学习,所以我很生疏。但是,当您回显我们的$desc、$desc_hr等时,是否必须将[0]、[1]放在后面才能拾取数组项?我在每个字段上都出现“undefined variable$desc”等错误。变量设置在循环内。第二行有一个输入错误,应该是
$desc\u hr
而不是$desc)\u hr
。错误消息确实给了您一个提示,因为它不知道$desc
,因为实际上没有变量$desc
,它只是在)
处停止,因为我一直在尝试让它工作。我知道我的逻辑失败了。希望这是件简单的事。我将不得不把我的问题放在另一个问题上。
if (!empty($_POST['desc1'])){
$desc1 = $_POST['desc1'];
}
else{
$desc1 = NULL;
}
if (!empty($_POST['desc_hr1'])){
$desc_hr1 = $_POST['desc_hr1'];
}
else{
$desc_hr1 = NULL;
}
if (!empty($_POST['desc_rt1'])){
$desc_rt1 = $_POST['desc_rt1'];
}
else{
$desc_rt1 = NULL;
}
if (!empty($_POST['desc_amt1'])){
$desc_amt1 = $_POST['desc_amt1'];
}
else{
$desc_amt1 = NULL;
}
if (!empty($_POST['desc2'])){
$desc2 = $_POST['desc2'];
}
else{
$desc2 = NULL;
}
if (!empty($_POST['desc_hr2'])){
$desc_hr2 = $_POST['desc_hr2'];
}
<tr>
<td><input name="desc[]" type="text" value="<?php echo $desc; ?>"></td>
<td> <input name="desc_hr[]" type="text" value="<?php echo $desc_hr; ?>"></td>
<td> <input name="desc_rt[]" type="text" value="<?php echo $desc_rt; ?>"></td>
<td><input name="desc_amt[]" type="text" value="<?php echo $desc_amt; ?>"></td>
<td><input type="button" value="X" name="delete" class="btnDelete" onclick="deleteLine(this)"></td>
</tr>
foreach ($_POST['desc'] AS $i => $desc) {
$desc_hr = $_POST['desc_hr'][$i];
$desc_rt = $_POST['desc_rt'][$i];
$desc_amt = $_POST['desc_amt'][$i];
...
}