私の見解では、これをやっています:
<?php if($user_can_write) {?>
<a href=<?php echo base_url('backend_controllers/users/foo')?> style="text-decoration:none">
Add</a>
<?php } ?>
アクセス制御の実装であるコントローラーから変数 $user_can_write を渡します。奇妙な部分は、このページ、つまりこのビューを更新するたびに、アンカータグが実行されることです。つまり、ユーザーコントローラーの foo 関数が呼び出されて実行されます。毎回!基本的に、foo関数はdbを1行ずつ増やします(dbに行を追加します)ので、更新のたびにアンカータグが実行されることは私にとって実際的ではありません
ビューでこの実装を行うと(代替アプローチ):
<?php if($user_can_write) {?>
<a href='javascript:void(0);' onclick="on_click_method_for_anchor()" style="text-decoration:none">
Add</a>
<?php } ?>
さらに、私のjavascriptでこれを行います:
function on_click_method_for_anchor(){
$.ajax({
url: '<?php echo base_url('backend_controllers/user/foo'); ?>',
type: 'POST',
success: function(result){
$('.my_span_tag_class').html(result)
}
});
これは完璧に機能しているようで、ページをリロードしてもfooは呼び出されません。アンカータグがこのように動作する理由を誰か教えてください。私は明らかな何かを見逃していますか?