1

我有一个数据网格,其中包含要删除的批量操作以及单次删除。

这是我的数据网格的快照:

在此处输入图像描述

我的数据网格如下:

 <form method="post" action="">
   <table>
      <tr>
         <td><input type="checkbox" value="1" name="checkIds[]"/></td>
         <td>user</td><td><a href="user/delete/1"><img src="delete.png"/></a></td>
      </tr>
   </table>
 </form>

使用批量操作删除时,我可以将数据作为帖子提交。目前对于使用删除按钮操作的单个删除,如您在操作列中所见,我只是放置超链接或将其作为 GET 请求发送。据我所知,删除操作应使用 POST 或 DELETE 以避免网络爬虫意外删除我的数据。我想到了一种将其作为 POST 操作发送的解决方案,如下所示:

  <form method="post" action="user/delete/1" id="form_id_1"></form><a href="#" onclick="//submit form"><img src="delete.png"/></a>

问题是这个表单标签将在我的父表单标签内,它违反了 html 标准,因为表单标签不能在另一个表单标签内

如何在此处发送单个删除操作的发布请求?请问有什么逻辑吗?

4

3 回答 3

0

不要添加其他表格。只需添加另一个提交按钮。使用相同的表单处理程序,并让它检查是否有任何“删除我”提交按钮$_POST(只有在单击它们时才会发生)。

不过,您必须对所有操作使用 POST。

于 2013-02-16T09:52:17.073 回答
0

我提出了如下解决方案。如果我做错了请纠正我

  <form method="post">
  <table>
  // datagrid
  <a href="delete" data="4"><img src="delete.png"/></a>
  </table>
  <input type="hidden" value="" name="id"/>

  // to distinguish between single delete and bulk delete
  <input type="hidden" name="single_delete" value="" id="single_delete_flag"/>
  </form>

  //js
  //onclick handler for anchor action delete:
  $("#id").attr("value",$(this).attr("data"));
  $("#single_delete_flag").attr("value","1");
  $("form").submit();


  //delete.php
  check if request if post
  check if single_delete is 1, then single delete
  else if check bulk delete
于 2013-02-16T10:00:21.643 回答
0

尝试:

 <form method="post" action="">
   <table>
      <tr>
         <td><input type="checkbox" value="1" name="checkIds[]"/></td>
         <td>user</td><td><input type="submit" class="sdelete" name="sdelete" value="<?= $ID; ?>" /></td>
      </tr>
   </table>
 </form>

从那里,您将使用 css 来修改.sdelete外观,在 PHP 中,您可以通过以下方式获得单个删除:

if(isset($_POST['sdelete'])) {
    $id = $_POST['sdelete'];
    //use $id to delete a single entry from DB, and then produce new output
}

这应该完美无缺。^^

于 2013-02-16T10:18:54.077 回答