我有一个html表,第一列有id。此列已隐藏。我现在读到这是一个糟糕的方法。
但是当用户选择一行并点击删除按钮来执行带有此ID的ajax帖子时,我需要这个隐藏的ID。
我还应该在哪个位置以不同方式将此ID设置为不同,为什么这种方法不好?
答案 0 :(得分:5)
无论您将它放在何处,如果将HTML中的特定数据传输到浏览器,用户将能够看到它。
您可以通过隐藏它来使其成为间接等,但这样做不会以任何方式安全。
我的建议是在服务器端实现某种严格的访问控制机制,以确保尝试删除操作的人有权这样做 - 而不是试图隐藏客户端的东西。
您也可以考虑在将ID发送到客户端之前对其应用某种加密方式,以使其无法使用。
答案 1 :(得分:0)
您可以为每个行元素添加数据属性,并在单击行时读取它。这里的优点是,数据属性值不会显示在屏幕上。
答案 2 :(得分: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`
});
答案 3 :(得分:0)
作为凭证的敏感数据不应该是客户端可访问的。但由于我不知道您所谓的敏感数据,我建议您使用jquery数据对象。这有利于保持DOM尽可能干净:
//head or any DOM element
$('head').data('key','myValue'); //set
var value = $('head').data('key'); //get
答案 4 :(得分: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,或者你不能每<tr>
使用一个单独的表单,那么Sampath的回答将是我的首选(为每个data-id
添加<tr>
属性。)