我正在编写一个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属性是不好的做法?如果是这样,存储这些数据的最佳方法是什么?
答案 0 :(得分:9)
请改用数据属性。将它们存储在href中并不是语义的,如果您希望有时存储ID,以及其他时间存储其他数据,该怎么办?您可以根据需要创建任意数量的数据属性,为它们提供语义名称。
<a class="delete" data-id="1231" href="#">
然后在你的javascript中:
...
data: { id: $(this).data('id') }
...
OR
data: { id: $(this).attr('data-id') }
答案 1 :(得分:2)
说实话,你总是要将要删除的记录的ID发送到服务器,但是你要这样做。即使您执行数据属性,这不是问题,也就是您通过AJAX“通过线路”发送数据,以便人们可以看到ID。
你需要思考 - 好吧,这个ID可以改变,但是你很聪明,人们会找到一种方法来改变它并可能删除不同的客户ID ......所以... 总是确保您执行相关的安全检查服务器端即当前登录的用户是否能够删除正在发送的用户ID?