Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 停止列表中最后一行的显示,即使它已从数据库中删除_Javascript_Jquery_Codeigniter - Fatal编程技术网

Javascript 停止列表中最后一行的显示,即使它已从数据库中删除

Javascript 停止列表中最后一行的显示,即使它已从数据库中删除,javascript,jquery,codeigniter,Javascript,Jquery,Codeigniter,目前在我的项目中,用户可以上传附件并删除它们 当我删除最后一个附件时,即使从数据库中删除并上载文件夹,它仍然显示在表列表中 问题:当用户删除最后一个附件时,我如何确保它不会显示它 现在解决 我已经让它工作了,现在我必须创建一个javascript函数 它可以只获取附件,然后在另一个ajax上调用此函数return getattachments() 当然,现在我必须创建一个新的php codeigniter控制器函数,它只获取附件 $(document).ready(function() { f

目前在我的项目中,用户可以上传附件并删除它们

当我删除最后一个附件时,即使从数据库中删除并上载文件夹,它仍然显示在表列表中

问题:当用户删除最后一个附件时,我如何确保它不会显示它

现在解决 我已经让它工作了,现在我必须创建一个javascript函数

它可以只获取附件,然后在另一个ajax上调用此函数
return getattachments()

当然,现在我必须创建一个新的php codeigniter控制器函数,它只获取附件

$(document).ready(function() {

function getattachments() {
    $.ajax({
        url: "<?php echo base_url('extensions/attachments/getattachments');?>",
        type: 'post',       
        dataType: 'json',
        data: {
            posthash: $('#posthash').val()
        },
        success: function(json) {

            info = '';
            
            $.each(json['attachments'], function( key, value ) {
                info += '<tr>';
                info += '<td>';
                info += value['orig_name'];
                info += '</td>';
                info += '<td>';
                info += value['file_size'] + 'KB';
                info += '</td>';
                info += '<td class="text-center">';
                info += '<button type="button" id="delete_button" class="btn btn-danger" data-id="' + value['attachment_id'] +'"><i class="fa fa-trash-o" aria-hidden="true"></i></button>';
                info += '</td>';
                info += '</tr>';
            }); 

            $('#file-attachments tbody').html(info);
            
        },
    });
}

$(document).on('click', '#delete_button', function (e) {
    e.preventDefault();

    $.ajax({
        url: "<?php echo base_url('extensions/attachments/delete');?>",
        type: 'post',       
        dataType: 'json',
        data: {
            attachment_id: $(this).attr("data-id"),
            posthash: $('#posthash').val()
        },
        success: function(json) {
            return getattachments();
        },
    });
});

$('#add_attachment').on('click', function() {
    
$('#form-upload').remove();

$('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file" /></form>');

$('#form-upload input[name=\'file\']').trigger('click');
    
$('#form-upload input[name=\'file\']').on('change', function() {
        
    var formData = new FormData($(this).parent()[0]);
    formData.append('posthash', $("#newreply #posthash").val());

    $.ajax({
        url: "<?php echo base_url('extensions/attachments/upload');?>",
        type: 'post',       
        dataType: 'json',
        data: formData,
        cache: false,
        contentType: false,
        processData: false,     
        success: function(json) {
            return getattachments();
        },          

        });
    
    });
});

});
$(文档).ready(函数(){
函数getattachments(){
$.ajax({
url:“”,
键入:“post”,
数据类型:“json”,
数据:{
postshash:$('#postshash').val()
},
成功:函数(json){
信息='';
$.each(json['attachments'],函数(键,值){
信息+='';
信息+='';
信息+=值['orig_name'];
信息+='';
信息+='';
信息+=值['file_size']+'KB';
信息+='';
信息+='';
信息+='';
信息+='';
信息+='';
}); 
$('#文件附件tbody').html(信息);
},
});
}
$(文档)。在('单击','删除'按钮'上,函数(e){
e、 预防默认值();
$.ajax({
url:“”,
键入:“post”,
数据类型:“json”,
数据:{
附件_id:$(此).attr(“数据id”),
postshash:$('#postshash').val()
},
成功:函数(json){
返回getattachments();
},
});
});
$('add#u attachment')。在('click',function()上{
$(“#表单上载”).remove();
$('body')。前缀(“”);
$('#表单上载输入[name=\'file\']')。触发器('click');
$('#表单上载输入[name=\'file\']')。在('change',function()上{
var formData=new formData($(this).parent()[0]);
append('posthash',$(“#newreply#posthash”).val();
$.ajax({
url:“”,
键入:“post”,
数据类型:“json”,
数据:formData,
cache:false,
contentType:false,
processData:false,
成功:函数(json){
返回getattachments();
},          
});
});
});
});
控制器

<?php

class Attachments extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('extensions/attachment_model');
    }

    public function getattachments(){
        $data['attachments'] = array();

        $attachments_results = $this->attachment_model->getattachmentsfornewreply($this->input->post('posthash'));

        foreach ($attachments_results as $attachment)
        {
            $data['attachments'][] = array(
                'attachment_id' => $attachment['attachment_id'],
                'post_id' => $attachment['post_id'],
                'posthash' => $attachment['posthash'],
                'file_name' => $attachment['file_name'],
                'orig_name' => $attachment['orig_name'],
                'file_size' => $attachment['file_size'],
                'path' => $attachment['path'] 
            );
        }

        echo json_encode($data);
    }

    public function upload()
    {
        $this->load->library('upload');

        $data = array();

        $attachments_results = array();

        // The session userid
        $user_id = $this->session->userdata('user_id');

        // User Upload Folder
        $user_upload_folder = $this->user_model->getuseruploadfolder($user_id);

        $folder = date('Ym');

        if (!is_dir(FCPATH . 'uploads/' . $folder)) {
            mkdir(FCPATH . 'uploads/' . $folder, 0777, true);
        }

        $this->load->helper('string');

        $config['upload_path'] = './uploads/' . $folder . '/';
        $config['allowed_types'] = 'gif|jpg|png|php|JPEG|PNG';
        $config['max_size'] = 5000;
        $config['max_width'] = 0;
        $config['max_height'] = 0;
        $config['file_name'] = 'post_' . $user_id . '_' . time() . '_' . random_string('alpha', 16);

        $this->upload->initialize($config);

        if (!$this->upload->do_upload('file'))
        {
            $data['error'] = $this->upload->display_errors();

        } else {

            $upload_data = $this->upload->data();

            $attachment_insert = array(
                'post_id' => '0',
                'posthash' => $this->input->post('posthash'),
                'user_id' => $this->session->userdata('user_id'),
                'file_name' => $upload_data['file_name'],
                'orig_name' => $upload_data['client_name'],
                'file_size' => $upload_data['file_size'],
                'path' => $folder . '/' . $upload_data['file_name'],
                'datecreated' => time()
            );

            $this->attachment_model->insert($attachment_insert);

            $data['success'] = TRUE;
        }

        echo json_encode($data);
    }

    public function delete()
    {
        $data = array();

        if ($this->input->post('attachment_id'))
        {
            $data['success'] = true;

            $get = $this->attachment_model->getattachment($this->input->post('attachment_id'));

            if (unlink(FCPATH . 'uploads/' . $get['path']))
            {
                $this->attachment_model->deleteattachment($this->input->post('attachment_id'));
            }
        }

       echo json_encode($data);
    }
}

你能在你的
success
函数中添加
控制台.log(json)
来检查错误在哪里吗?@ChrisG没有错误,它只是显示最后一个结果,即使已从数据库中删除。这意味着问题出在你的服务器代码上,这意味着这不是javascript问题。你不能在页面中重复ID。根据定义,它们必须是唯一的。使用类代替按钮删除成功后,应通过ajax返回该记录的id,然后将其从dom中删除
$(document).ready(function() {

function getattachments() {
    $.ajax({
        url: "<?php echo base_url('extensions/attachments/getattachments');?>",
        type: 'post',       
        dataType: 'json',
        data: {
            posthash: $('#posthash').val()
        },
        success: function(json) {

            info = '';
            
            $.each(json['attachments'], function( key, value ) {
                info += '<tr>';
                info += '<td>';
                info += value['orig_name'];
                info += '</td>';
                info += '<td>';
                info += value['file_size'] + 'KB';
                info += '</td>';
                info += '<td class="text-center">';
                info += '<button type="button" id="delete_button" class="btn btn-danger" data-id="' + value['attachment_id'] +'"><i class="fa fa-trash-o" aria-hidden="true"></i></button>';
                info += '</td>';
                info += '</tr>';
            }); 

            $('#file-attachments tbody').html(info);
            
        },
    });
}

$(document).on('click', '#delete_button', function (e) {
    e.preventDefault();

    $.ajax({
        url: "<?php echo base_url('extensions/attachments/delete');?>",
        type: 'post',       
        dataType: 'json',
        data: {
            attachment_id: $(this).attr("data-id"),
            posthash: $('#posthash').val()
        },
        success: function(json) {
            return getattachments();
        },
    });
});

$('#add_attachment').on('click', function() {
    
$('#form-upload').remove();

$('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file" /></form>');

$('#form-upload input[name=\'file\']').trigger('click');
    
$('#form-upload input[name=\'file\']').on('change', function() {
        
    var formData = new FormData($(this).parent()[0]);
    formData.append('posthash', $("#newreply #posthash").val());

    $.ajax({
        url: "<?php echo base_url('extensions/attachments/upload');?>",
        type: 'post',       
        dataType: 'json',
        data: formData,
        cache: false,
        contentType: false,
        processData: false,     
        success: function(json) {
            return getattachments();
        },          

        });
    
    });
});

});
<?php

class Attachments extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('extensions/attachment_model');
    }

    public function getattachments(){
        $data['attachments'] = array();

        $attachments_results = $this->attachment_model->getattachmentsfornewreply($this->input->post('posthash'));

        foreach ($attachments_results as $attachment)
        {
            $data['attachments'][] = array(
                'attachment_id' => $attachment['attachment_id'],
                'post_id' => $attachment['post_id'],
                'posthash' => $attachment['posthash'],
                'file_name' => $attachment['file_name'],
                'orig_name' => $attachment['orig_name'],
                'file_size' => $attachment['file_size'],
                'path' => $attachment['path'] 
            );
        }

        echo json_encode($data);
    }

    public function upload()
    {
        $this->load->library('upload');

        $data = array();

        $attachments_results = array();

        // The session userid
        $user_id = $this->session->userdata('user_id');

        // User Upload Folder
        $user_upload_folder = $this->user_model->getuseruploadfolder($user_id);

        $folder = date('Ym');

        if (!is_dir(FCPATH . 'uploads/' . $folder)) {
            mkdir(FCPATH . 'uploads/' . $folder, 0777, true);
        }

        $this->load->helper('string');

        $config['upload_path'] = './uploads/' . $folder . '/';
        $config['allowed_types'] = 'gif|jpg|png|php|JPEG|PNG';
        $config['max_size'] = 5000;
        $config['max_width'] = 0;
        $config['max_height'] = 0;
        $config['file_name'] = 'post_' . $user_id . '_' . time() . '_' . random_string('alpha', 16);

        $this->upload->initialize($config);

        if (!$this->upload->do_upload('file'))
        {
            $data['error'] = $this->upload->display_errors();

        } else {

            $upload_data = $this->upload->data();

            $attachment_insert = array(
                'post_id' => '0',
                'posthash' => $this->input->post('posthash'),
                'user_id' => $this->session->userdata('user_id'),
                'file_name' => $upload_data['file_name'],
                'orig_name' => $upload_data['client_name'],
                'file_size' => $upload_data['file_size'],
                'path' => $folder . '/' . $upload_data['file_name'],
                'datecreated' => time()
            );

            $this->attachment_model->insert($attachment_insert);

            $data['success'] = TRUE;
        }

        echo json_encode($data);
    }

    public function delete()
    {
        $data = array();

        if ($this->input->post('attachment_id'))
        {
            $data['success'] = true;

            $get = $this->attachment_model->getattachment($this->input->post('attachment_id'));

            if (unlink(FCPATH . 'uploads/' . $get['path']))
            {
                $this->attachment_model->deleteattachment($this->input->post('attachment_id'));
            }
        }

       echo json_encode($data);
    }
}