2012-03-16 60 views
3

讓我說我正在做一個ajax調用一些cakePHP控制器的操作來從數據庫中刪除一些數據。但是,在我刪除數據(當然在CakePHP控制器操作中發生的)之前,我想檢查請求刪除數據的用戶是否有權這樣做。我正在試圖做的是要顯示給用戶執行的步驟,例如我有這樣的事情:顯示jquery ajax執行狀態

$.ajax({ 
    type: 'POST', 
    url: '.../some_cakePHP_controller_action', 
    beforeSend: function(){ 
     $("my_loading_div").html("Checking permissions..."); 
    } 
    success: function(){ 
     // do stuff on success 
    } 
}); 

1-當用戶點擊刪除,我想向他出示裝載DIV用像Checking permissions...

2-消息如果用戶有權限刪除數據時,消息Removing data...

改變現在,你可以在上面看到,問題是,當用戶點擊刪除,他將有消息Checking permissions....,但我的數據可能已被刪除,因爲我已經在我的cakePHP樂趣ction。所以,用戶會有錯誤的信息。我該如何實現這種行爲?

在此先感謝您的幫助

+3

爲此,你需要檢查一次兩次調用$阿賈克斯,然後removing.or未來阿賈克斯$兩個步驟。 – 2012-03-16 19:55:56

回答

3

您需要多個ajax調用。步驟將是這樣的,

  1. ajax調用檢查權限。
  2. 在php結束檢查您是否有is_writable函數的刪除權限。
  3. 返回上一步的狀態,並顯示此作爲Ajax響應
  4. 根據第3步的狀態發送刪除請求AJAX
  5. 在PHP結束通話unlink到PHP。然後再檢查文件是否由file_exists
  6. 存在返回前面的步驟,並顯示消息的用戶相應
+0

我想我可以在一個Ajax調用中做到這一點,我想我需要2個電話 – user765368 2012-03-16 20:04:37

+0

@ user765368是的。步驟1和步驟4 – 2012-03-16 20:07:05

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"); 
       } 
      });  
    }); 

}); 
1

這不是安全的,如果用戶是通過JS允許或不驗證! 在點擊「刪除」之前可以修改JS。 你應該通過PHP或兩者來驗證它。

1

就個人而言,我會在給他們刪除選項之前檢查權限。當頁面被渲染時,我很可能會這樣做。喜歡的東西:

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