应用程序启动时,默认情况下<tr>
内没有<td>
或dynatable
。
我正在使用javascript从客户端添加/删除表行到p_scents
。这在客户端非常有效。
我试图循环遍历元素并将数据收集到一个数组中以便在PHP中进行处理。
当我提交表单时,HTML将恢复为默认状态,p_scents
内没有数据,我无法获取数据。
有没有办法让我用javascript创建的HTML元素/值能够持久保存到服务器端?我不一定需要保留HTML,但我需要帖子中的值。
如果您需要我可以提供的任何其他说明/代码,请告诉我。我已经尝试了$ _POST方法,而代码根本就不存在。在我的情况下我应该做些什么的想法?
客户端表单:
<form method="post" action="<?php echo htmlspecialchars('?page_id=133');?>" enctype="multipart/form-data" >
<table class="dynatable">
<thead>
<tr>
<th>Time</th>
<th>Description</th>
</tr>
</thead>
<tbody id="p_scents">
<tr><td><input type="text" name="ts_value" class="timestamp_input"/></td><td><TEXTAREA NAME="ts_description" rows="3" cols="30" style="resize:none;" ></TEXTAREA></td><td><a href="#" id="remScnt">Remove</a></td></tr>
<tr><td><input type="text" name="ts_value" class="timestamp_input"/></td><td><TEXTAREA NAME="ts_description" rows="3" cols="30" style="resize:none;" ></TEXTAREA></td><td><a href="#" id="remScnt">Remove</a></td></tr>
</tbody>
</table>
</form>
表单提交到服务器端:
<form method="post" action="<?php echo htmlspecialchars('?page_id=133');?>" enctype="multipart/form-data" >
<table class="dynatable">
<thead>
<tr>
<th>Time</th>
<th>Description</th>
</tr>
</thead>
<tbody id="p_scents">
</tbody>
</table>
</form>
答案 0 :(得分:0)
虽然正如评论中所建议的那样,这是ajax的一个强有力的案例,它不仅仅是解决方案。
首先,您需要提供表单元素数组语法名称,例如:
<tr><td><input type="text" name="ts_value[]" class="timestamp_input"/></td><td><TEXTAREA NAME="ts_description[]" rows="3" cols="30" style="resize:none;" ></TEXTAREA></td><td><a href="#" class="remScnt">Remove</a></td></tr>
<tr><td><input type="text" name="ts_value[]" class="timestamp_input"/></td><td><TEXTAREA NAME="ts_description[]" rows="3" cols="30" style="resize:none;" ></TEXTAREA></td><td><a href="#" class="remScnt">Remove</a></td></tr>
注意没有这个的方括号name="ts_value[]"
,您将覆盖这些值,并且只会每次接收具有该名称的最后一个值。此外,我将remScnt更改为一个类,因为您无法重复ID。
然后您可以轻松访问php中的数据:
var_dump($_POST['ts_value']);
重建表单只是迭代值:
<?php
if($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['ts_value']) && isset($_POST['ts_description'])):
for($i=0;$i<count($_POST['ts_value']);$i++;):?>
<tr><td><input type="text" name="ts_value[]" class="timestamp_input" value="<?php echo $_POST['ts_value'][$i];?>" /></td>
<td><TEXTAREA NAME="ts_description[]" rows="3" cols="30" style="resize:none;" ><?php echo $_POST['ts_description'][$i];?></TEXTAREA></td><td><a href="#" class="remScnt">Remove</a></td></tr>
<?php endfor;
endif; ?>