假设我正在对某些cakePHP控制器操作进行ajax调用,以从数据库中删除一些数据。但在我删除数据之前(当然在我的cakePHP控制器操作中发生),我想检查请求删除数据的用户是否有权这样做。我要做的是向用户显示执行步骤,例如我有这样的事情:
$.ajax({
type: 'POST',
url: '.../some_cakePHP_controller_action',
beforeSend: function(){
$("my_loading_div").html("Checking permissions...");
}
success: function(){
// do stuff on success
}
});
1-当用户点击DELETE时,我想向他显示加载div,其中包含Checking permissions...
2-如果用户有权删除数据,则Removing data...
现在,正如您在上面看到的,问题是当用户单击DELETE时,他将收到消息Checking permissions....
,但我的数据可能已被删除,因为我已经在我的cakePHP函数中。因此,用户将收到错误的消息。我该如何实现这种行为?
提前感谢您提供任何帮助
答案 0 :(得分:3)
你需要多次ajax调用。步骤将是这样的,
答案 1 :(得分:1)
您可能想要进行2次ajax调用。首先检查权限,如果有权限,则删除该项目。
$("statusDiv").html("Checking permissions").fadeIn(100,function(){
$.post("checkpermission?item=23",function(data){
if(data=="allowed")
{
$("#statusDiv").html("Deleting...");
$.post("mycontroller/delete/23",function(result){
if(result=="deleted")
{
$("#statusDiv").html("Deleted Successfully");
}
});
});
});
答案 2 :(得分:1)
通过JS验证用户是否被允许是不安全的! 在点击“删除”之前可以修改JS。 您应该通过PHP或两者验证它。
答案 3 :(得分:1)
就个人而言,我会在给他们删除内容之前检查权限。我很可能会在呈现页面时执行此操作。类似的东西:
<?php if (hasPermission) { ?>
html to show delete function
<?php } else { ?>
html to login to delete
<?php } ?>