-1

我有一个 html 表,第一列有 id。此列已隐藏。我现在读过这是一个不好的方法。

但是当用户选择一行并单击删除按钮以使用此 ID 进行 ajax 发布时,我需要此隐藏 ID。

我还应该在哪里以不同的方式放置每行的这个 id,为什么这种方法不好?

4

5 回答 5

5

不管你把它放在哪里,如果一个特定的数据是在传输到浏览器的 HTML 中,用户将能够看到它。

您可以通过隐藏它等来使其间接,但这样做不会以任何方式保护它。

我的建议是在服务器端实施某种严格的访问控制机制,以确保尝试删除操作的人有权这样做 - 而不是试图在客户端隐藏东西。

您也可以考虑在将 id 发送给客户端之前对其应用某种加密,以使其不可猜测。

于 2013-05-04T13:50:22.247 回答
0

将 id 作为属性添加到表格行中。像这样的东西:

<tr data-id="1">
    <td><span class="delete">Delete</span></td>
</tr>

<tr data-id="2">
    <td><span class="delete">Delete</span></td>
</tr>

当用户单击删除或编辑时,使用 jquery 获取它。

$('.delete').bind('click', function (e) {
    var $row = $(this).closest('tr');
    var id = $row.attr('data-id');

    // now you have `id`
});
于 2013-05-04T13:57:55.043 回答
0

作为凭据的敏感数据不应在客户端访问。但由于我不知道您所说的敏感数据,我建议您使用 jquery 数据对象。这有利于保持 DOM 尽可能干净:

//head or any DOM element
$('head').data('key','myValue'); //set
var value = $('head').data('key'); //get
于 2013-05-04T13:58:10.077 回答
0

如果每行已经有一个“删除按钮”,那么通常的约定是将 id 放入每个表单内的隐藏输入字段中,如下所示:

<tr>
  <td>John Smith</td>
  <td>37</td>
  <td>
    <form action="/delete">
      <input type="hidden" name="id" value="id_for_this_row">
      <button type="submit">Delete</button>
    </form>
  </td>
</tr>

此代码完全无需任何 Javascript 即可工作。如果您想通过 AJAX 等在后台发布表单来增强行为,您只需将其添加到顶部即可。

如果您的应用程序已经大量使用 AJAX,或者您不能使用单独的表单 per <tr>,那么 Sampath 的答案将是我的首选(data-id为 each 添加一个属性<tr>。)

于 2013-05-04T13:58:50.870 回答
0

您可以为每个行元素添加一个数据属性,并在单击行时读取它。这里的好处是,数据属性值不会显示在屏幕上。

于 2013-05-04T13:51:46.700 回答