通过邮件继续通过PHP表单动态生成html

时间:2014-09-10 21:23:14

标签: javascript php html wordpress dynamically-generated

应用程序启动时,默认情况下<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>

1 个答案:

答案 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; ?>