2014-09-10 27 views
0

当应用程序启动时,默认情况下在dynatable内部没有<tr><td>。 我正在使用javascript从客户端添加/删除表格行到p_scents。这在客户端非常有效。 我想循环遍历元素并将数据收集到一个数组中以便在PHP中进行处理。 当我提交表单时,HTML会回到默认值,p_scents内部没有数据,我无法获取数据。坚持通过PHP的形式通过邮件动态生成html

有没有办法让我用JavaScript创建的HTML元素/值坚持到服务器端?我不一定需要HTML留下来,但我需要post中的值。

如果您需要任何额外的解释/代码,我可以尽可能提供,请让我知道。我已经尝试了$ _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

如果你回来的同一页,你应该使用AJAX来提交表单,这样你永远不会失去状态。 – briansol 2014-09-10 21:36:17

回答

0

虽然,在意见提出,这是阿贾克斯很强的情况下,它不是唯一的解决方案。

<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[]"没有这个,要覆盖值,只会每天使用该名称收到的最后一个值:

你需要给你的表单元素数组语法的名称,例如

1 。另外我改变了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; ?>