5

我正在编写一个 node.js 应用程序,并且有点担心我如何构建发布数据以发送到服务器。例如,当我想删除一个数据项时,我将该项的 id 放在 href 属性中:

<a class='delete' href="1231">Delete this data</a>
<!-- href is based on a variable I'm pulling from the server -->

单击该链接时,我会阻止默认操作,然后运行 ​​ajax 请求:

//On click + ajax
body.on('click', '.delete', function(e){
e.preventDefault();
    $.ajax({
        type: 'POST',
        url: '/admin/report/detail/delete',
    data: {id: $(this).attr('href')},
    success: function(){
        //Success message
    },
    error: function(){
        //Error message
    }
});
});

我想知道,以这种方式使用 href 属性是不好的做法吗?如果是这样,存储这些数据的最佳方式是什么?

4

2 回答 2

9

请改用数据属性。将它们存储在 href 中不是语义的,如果您有时想存储 ID,而在其他时间存储其他数据怎么办?您可以根据需要创建任意数量的数据属性,并为其赋予语义名称。

<a class="delete" data-id="1231" href="#">

然后在你的javascript中:

...
data: { id: $(this).data('id') }
...

或者

data: { id: $(this).attr('data-id') } 
于 2013-04-19T15:24:18.033 回答
2

老实说,无论你怎么做,你总是必须将要删除的记录的 ID 发送到服务器。即使您执行数据属性,这也不是问题所在,而是您通过 AJAX“通过线路”发送数据,以便人们可以看到 ID。

您需要考虑 - 好吧,这个 ID 可以更改,无论您多么聪明,人们都会找到一种方法来更改它并可能删除不同的客户 ID...所以...始终确保您进行相关的安全检查服务器端,即当前登录的用户是否能够删除正在发送的用户 ID?

于 2013-04-19T15:26:07.840 回答