我在Codeigniter框架中使用此代码,以下代码从数据库中删除记录,但表行未删除或淡出...请检查代码,并告诉我,如何修复此代码..
HTML代码:
<table id="tbl1">
<tr>
<td><a href="<?php echo site_url(); ?>admin/delete/<?php echo $get->id; ?>" class="deleteLink">Delete</a></td>
<tr>
</table>
Jquery代码:
$(document).ready(function(){
$(".deleteLink").click(function(e){
$this = $(this);
e.preventDefault();
var url = $(this).attr("href");
$.get(url, function(r){
if(r.success){
$this.closest("tr").remove();
}
});
});
});
控制器代码:
public function delete($id){
if (!$id) {
return FALSE;
}
$this->db->where($this->_primary_key, $id);
$this->db->limit(1);
$delete = $this->db->delete($this->_table_name);
if ( $delete ) return json_encode(array("success" => true));
}
答案 0 :(得分:3)
首先,你的控制器并没有真正以ajax的形式返回任何数据,对吗?解决方案是:
public function delete($id) {
$result = array('success' => FALSE, 'error' => '');
if (!$id) {
echo json_encode($result);
}
$this->db->where($this->_primary_key, $id);
$this->db->limit(1);
// if row was deleted successfully, result in success
if( $this->db->delete($this->_table_name) !== FALSE) {
$result['success'] = TRUE;
// otherwise result in error!
}else{
$result['success'] = FALSE;
$result['error'] = 'Row could not be deleted!';
}
echo json_encode($result);
}
然后你会有一个JSON对象作为AJAX响应,你可以在你的GET回调中轻松访问:
$.get(url, function(r){
if(r.success){
$this.closest("tr").remove();
}else{
alert('An error occured: ' + r.error);
}
}, 'json');
请注意'}, 'json');
部分 - 告诉您的GET()函数,结果是JSON格式。