2012-03-16 23 views
3

私はデータベースからいくつかのデータを削除するためにいくつかのcakePHPコントローラアクションにajaxコールをしています。しかし、私のデータを削除する前に(私の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

このためには、チェックするために$ .ajaxを2回呼び出してから、次の$ .ajaxを削除する必要があります。 –

答えて

3

複数のajaxコールが必要です。手順は次のようなものになります。

  1. ajaxコールの確認アクセス許可。
  2. PHP終了時に、is_writable機能の削除権限があるかどうかを確認してください。
  3. 戻る前のステップのステータスとPHPの端にコールunlink
  4. AJAXでPHPのために削除要求を送信し、ステップ3の状況によると、このようにAJAX応答
  5. を示しました。ファイルがfile_exists
  6. リターンで前のステップとショーメッセージのステータスが存在するなら、あなたはおそらく2つのAjaxの呼び出しを行うために望んでいることに応じて
+0

私はこれを1つのAjaxコールで行うことができると思っていましたが、私はこれを2回呼び出す必要があると思います – user765368

+0

@ user765368うん。ステップ1とステップ4 –

1

ユーザーに再確認してください。最初に権限を確認し、許可されている場合はアイテムを削除します。

$("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

個人的に、私は何かを削除するオプションを与える前に許可をチェックします。おそらく、ページがレンダリングされているときにこれを行うだけです。何かのように:

関連する問題