2011-12-13 119 views
0

我想从数据库中删除记录而不重新加载页面。在视图文件中,我有以下代码。但是当我点击删除链接时,没有任何反应。你能否帮我找出我做错的地方?使用jQuery删除数据库记录AJAX不起作用

在此先感谢。

我的视图文件:

<script type="text/javascript"> 
    $(function(){ // added 
     $('a.delete').click(function(){ 
      $.ajax({ 
       var a_href = $('selector').attr('href'); 
       type: "POST", 
       url: "<?php echo base_url(); ?>student_fee_status/payment_info_delete", 
       data: "id="+a_href, 
       success: function(html){ 
        $("#show").html(html); 
       } 
      }); 
     return false 
     }); 
    }); // added 
</script> 


<?php if(count($records) > 0) { $i = 0; foreach ($records as $row){ $i++; ?> 

<span> <?php echo $row['fee_type']; ?> : <?php echo $row['fee_amount']; ?> [<a id='<?php echo "$paymentid" ;?>' 
    class='delete' href='#'>Delete</a>]</span> <br> 

<?php }} ?>    

这是我的控制器:

function payment_info_delete(){ 

    $id = mysql_real_escape_string($_POST['id']);//Some clean up :) 

    $query= $this->db->delete('studentpayment2', array('pid' => $id)); 

    echo "$id"; 

} 
+2

使用Firebug的,如果您的请求得到正确的URL,并返回什么,以了解更多有关该错误 – Flo

+0

萤火虫会挑选这件事 - 检查JS控制台找出什么可能会出错 – Ash

回答

1
  1. 你需要把 'var a_href...' 线的AJAX功能之外
  2. 你需要用this替换指代当前点击元素的单词选择器。看到

    var a_href = $(this).attr('href'); $.ajax({...

+0

这是一个很好的观点 - 我甚至没有注意到变量声明在'.ajax'调用选项中。 –

+0

谢谢Ash。它现在正在传递数据并删除数据库记录。如果你有时间,请你告诉我一件事..当我点击删除链接删除数据,它现在工作正常,但它仍然显示在视图页面上的数据。如果我刷新页面,那么它就消失了。当我点击删除链接时,我怎么能让它消失?再次感谢 –

+0

您需要为您的成功功能添加一些内容,例如'; $('a.delete')。hide();'或者如果你想更具体地将元素赋值给一个变量并且调用'hide()':'var el = $(this);'并且在成功函数中:'el.hide();' – Ash

1
var a_href = $('selector').attr('href'); 
$.ajax({... 
+0

@Srijon'$('selector')'你应该改变它的右选择器,我认为这是'$('a.delete')' – mgraph

1

由于mgraph在他的回答中指出,该行var a_href = $('selector').attr('href');是不正确。您想用this替换'selector',以便从单击的锚点获取href属性。

这就是说,我认为这仍然可能是错误的 - 当然你想传回要删除的条目的ID,这似乎存储在锚标记的id属性中,而不是始终传回#符号?与此 var a_href = $('selector').attr('href');

要通过ID后面代替,而不是在href,更换此 var a_href = this.id;

+0

正是..我想传递的ID值锚标签并使用它来删除数据。我试过 - var a_href = $('a.delete')。attr('href');但它不起作用。你能否请告诉我如何传递我的锚标签的id值? –

+0

@Srijon我已经编辑了我的答案,包括你应该替换'var a_href = ...'行,试试看看它是否有效。 –

+0

非常感谢Anthony Grist。根据Ash的建议,我已将'var a_href ...'行放在ajax函数之外,并使用var a_href = $(this).attr('href'); $ .ajax({...它现在工作完美,非常感谢:) - –