【问题标题】:show jquery ajax execution status显示 jquery ajax 执行状态
【发布时间】:2012-03-16 19:52:46
【问题描述】:

假设我正在对一些 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...

现在,正如您在上面看到的,问题是当用户单击删除时,他将收到消息Checking permissions....,但我的数据可能已被删除,因为我已经在我的 cakePHP 函数中。因此,用户将收到错误消息。请问我该如何实现这种行为?

提前感谢您的帮助

【问题讨论】:

  • 为此,您需要调用 $.ajax 两次进行检查,然后为这两个步骤删除。或下一个 $.ajax 进行这两个步骤。

标签: php cakephp jquery


【解决方案1】:

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

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

【讨论】:

  • 我认为我可以在一次 Ajax 调用中做到这一点,我想我需要 2 次调用来完成此操作
  • @user765368 是的。第 1 步和第 4 步
【解决方案2】:

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

});

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      就个人而言,我会先检查权限,然后再给他们删除某些内容的选项。在呈现页面时,我很可能会简单地执行此操作。类似的东西:

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

      【讨论】:

        猜你喜欢
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        • 2015-03-03
        • 2014-11-18
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多