我正在尝试使用Codeigniter(3)的jquery从Mysql DB中的表中删除记录。它应该是一个非常简单的操作,但我是关于Codeigniter和jquery的新手,所以对于这个问题,我遇到了一些问题。
这是视图的一部分,我必须删除记录,特别是这是书籍(libri)部分:
<?php
echo "<table>";
echo "<tbody>";
echo "</br>";
foreach ($libri as $row):
?>
<tr>
<td>
<div>
</br>
<img src="<?php echo base_url('Immagini/book.png'); ?>" />
<a class="pdf" data-fancybox-type="iframe" rel="group" href="<?php
echo base_url($row['Url_suffix']) ?>"><?php echo $row['nome']; ?>
</a>
<a class='deleteUser' href="<?php
echo site_url('libro/elimina/'.$row['ID']) ?>">
<img src="<?php echo base_url('Immagini/button_close.png'); ?>"/>
</a>
</div>
</td>
</tr>
<?php
endforeach;
echo "</tbody>";
echo "</table>";
?>
</div>
</br>
</br>
<div>
<h3><span class="label label-success">Guide</span> </h3>
这是控制器(libro):
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Libro extends CI_Controller {
public function __construct(){
parent::__construct();
}
public function elimina($libri_id) {
$result=$this->libri->did_delete_row($libri_id);
redirect(site_url('admin/dashboard'), 'refresh');
//var_dump($result);
}
}
?>
这是jquery脚本:
<script type='text/javascript'>
$(document).ready(function(){
$(".deleteUser").click(function(e){
$this = $(this);
e.preventDefault();
var url = $(this).attr("href");
$.get(url, function(r){
if(r.success){
$this.closest("tr").remove();
}
})
});
});
</script>
这是libri.php模型:
<?php
/*
* File Name: libri.php
*/
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Libri extends CI_Model
{
function __construct()
{
//Call the Model constructor
parent::__construct();
}
function get_all() {
$query = $this->db->query('SELECT nome, ID, Url_suffix FROM libri');
return $query->result_array();
}
function get_all_api() {
$query = $this->db->query('SELECT * FROM libri');
return $query->result_array();
}
function get_one($libro_id) {
$this->db->where('ID',$libro_id);
$this->db->from('libri');
$query = $this->db->get();
if ($query->num_rows() > 0){
return $query->row();
}
else return false;
}
//fetch all employee records
function did_delete_row($id){
$this->db->where('ID',$id);
return $this->db->delete('libri');
}
function inserimento($data_2){
return $this->db->insert('libri',$data_2);
}
}
?>
在没有jquery脚本的情况下,一切都运行良好,我的意思是页面自己重新加载,然后行就消失了。虽然使用jquery脚本,页面不会自行重新加载,但“行”仍然存在。如果我自动加载页面,那么该记录肯定会被删除。
我做错了什么?
答案 0 :(得分:0)
因为param $ libri_id为null
site_url('libro/elimina/'.$row['ID'])
public function elimina($libri_id) {
$result=$this->libri->did_delete_row($libri_id);
redirect(site_url('admin/dashboard'), 'refresh');
}
试试这个(使用分段)
public function elimina() {
$libri_id = $this->uri->segment(3);
$result=$this->libri->did_delete_row($libri_id);
redirect(site_url('admin/dashboard'), 'refresh');
}
参考:https://ellislab.com/codeigniter/user-guide/libraries/uri.html