2012-09-21 118 views
1

在我看来,即时通讯做的:奇怪的锚标记行为

<?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递增一行(将行添加到db),所以这实际上并不实际对我来说,在每一次刷新锚标签执行

现在,如果我这样做这个实现我n中的视图(另一种方法):

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

这看似完美的,即使我重新加载页面时,富不叫,有人可以告诉我为什么锚标签的行为如此?我错过了一些明显的东西?

+0

你有这样的脚本哪些调用文档就绪或身体onload并执行标签? – GBD

+0

yes @GBD我在脚本中准备好了文档,但是没有一个会导致对foo函数的调用,或者任何会导致在我的db中插入的函数,只有foo才会执行 –

+0

@GBD,如果文档中有脚本准备好导致插入数据库,为什么它会停止,当我执行替代方法? –

回答

4

我想你错过了刚刚在锚标签的href属性后面的部分。

<?php if($user_can_write) {?> 
<a href="<?php echo base_url('backend_controllers/users/foo')?>" style="text-decoration:none"> 
Add</a> 
<?php } ?> 

试试这个。 我认为它会好