显示jquery ajax执行状态


show jquery ajax execution status

假设我正在对一些cakeHP控制器操作进行ajax调用,以从数据库中删除一些数据。但在我删除数据之前(这当然发生在我的cakeHP控制器操作中),我想检查请求删除数据的用户是否有这样做的权限。我试图做的是向用户显示执行的步骤,例如,我有这样的东西:

$.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....,但我的数据可能已经被删除,因为我已经在我的cakeHP函数中了。因此,用户将收到错误的消息。请问我该如何实现这种行为?

提前感谢的任何帮助

为此需要多次ajax调用。步骤是这样的,

  1. ajax调用以检查权限
  2. 在php端,使用is_writeable函数检查您是否具有删除权限
  3. 返回上一步的状态,并将其显示为ajax响应
  4. 根据步骤3的状态。通过ajax将删除请求发送到php
  5. 在php端调用unlink。然后通过file_exists再次检查该文件是否存在
  6. 返回上一步的状态并相应地向用户显示消息

您可能想要进行两次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");
               }
            });    
    });
});

通过JS验证用户是否被允许是不安全的!!!JS可以在点击"删除"之前进行修改。您应该通过PHP或两者同时验证它。

就我个人而言,在给他们删除某些内容的选项之前,我会检查权限。我很可能只是在渲染页面时这样做。类似于:

<?php if (hasPermission) { ?> 
  html to show delete function 
<?php } else { ?> 
  html to login to delete
<?php } ?>