Javascript 通过post通过PHP表单持久化动态生成的html
当应用程序启动时,默认情况下,Javascript 通过post通过PHP表单持久化动态生成的html,javascript,php,html,wordpress,dynamically-generated,Javascript,Php,Html,Wordpress,Dynamically Generated,当应用程序启动时,默认情况下,动态表内部没有或。 我正在使用javascript从客户端将表行添加/删除到p_scents。这在客户端非常有效。 我试图循环遍历元素,并将数据收集到一个数组中,以便在PHP中进行处理。 当我提交表单时,HTML回到默认状态,在p_scents中没有数据,我无法获取数据 有没有办法让我用javascript创建的HTML元素/值持久化到服务器端?我不一定需要保留HTML,但我需要post中的值 如果您需要任何额外的解释/代码,我可以提供尽可能多的,请让我知道。我尝试
动态表内部没有
或
。
我正在使用javascript从客户端将表行添加/删除到p_scents
。这在客户端非常有效。
我试图循环遍历元素,并将数据收集到一个数组中,以便在PHP中进行处理。
当我提交表单时,HTML回到默认状态,在p_scents
中没有数据,我无法获取数据
有没有办法让我用javascript创建的HTML元素/值持久化到服务器端?我不一定需要保留HTML,但我需要post中的值
如果您需要任何额外的解释/代码,我可以提供尽可能多的,请让我知道。我尝试过$u 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>
然而,正如评论中所建议的,这是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>
重建表单只需迭代值:
<?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; ?>
如果返回到同一页面,则应使用AJAX来提交表单,这样您就永远不会失去状态。
<?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; ?>