Javascript CodeIgniter ajax重新加载页面问题

Javascript CodeIgniter ajax重新加载页面问题,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我有一个带有ajax分页的页面,我现在可以检查会话是否存在并相应地进行处理。但是,如果会话已过期,我似乎无法删除菜单或正确重新加载页面。只剩下菜单,登录页面显示在表格所在的小区域中 控制器代码 public function index() { $conditions = array(); $data = array(); $totalRec = count($this->DocumentModel->admin_get_and

我有一个带有ajax分页的页面,我现在可以检查会话是否存在并相应地进行处理。但是,如果会话已过期,我似乎无法删除菜单或正确重新加载页面。只剩下菜单,登录页面显示在表格所在的小区域中

控制器代码

public function index()
    {
        $conditions = array();
        $data = array();
        $totalRec = count($this->DocumentModel->admin_get_and_search($conditions));
        $config['target']      = '#list';
        $config['base_url']    = site_url('/AdminDocuments/Search');
        $config['total_rows']  = $totalRec;
        $config['per_page']    = $this->get_per_page();
        $this->ajax_pagination->initialize($config);
        $data['links'] = $this->ajax_pagination->create_links();
        $data['datatable'] = $this->DocumentModel->admin_get_and_search(array('limit'=>$this->get_per_page()));
        $data['user'] = $this->AccountModel->get_person($this->get_person_id());
        $data['current_page'] = $this->ajax_pagination->getCurrPage();
        $this->load->view('layout/admins/common/header');
        $this->load->view('layout/admins/common/navigation');
        $this->load->view('layout/admins/common/title');
        $this->load->view('layout/admins/common/errors');
        $this->load->view('layout/admins/common/search');
        $this->load->view('admins/documents/index',$data);
        $this->load->view('layout/admins/common/footer'); 
    }

    public function search(){
        if($this->input->is_ajax_request()){
            if(!$this->logged_in()){
                $this->index();
            }else{
                $conditions = array();
                $page = $this->input->post('page');
                if(!$page){
                    $offset = 0;
                }else{
                    $offset = $page;
                }
                $keywords = $this->input->post('keywords');
                if(!empty($keywords)){
                    $conditions['search']['keywords'] = $keywords;
                }
                $totalRec = count($this->DocumentModel->admin_get_and_search($conditions));
                $config['target']      = '#list';
                $config['base_url']    = site_url('/AdminDocuments/Search');
                $config['total_rows']  = $totalRec;
                $config['per_page']    = $this->get_per_page();
                $this->ajax_pagination->initialize($config);
                $conditions['start'] = $offset;
                $conditions['limit'] = $this->get_per_page();
                $data['links'] = $this->ajax_pagination->create_links();
                $data['datatable'] = $this->DocumentModel->admin_get_and_search($conditions);
                $data['current_page'] = $this->ajax_pagination->getCurrPage();
                $this->load->view('admins/documents/ajax_pagination', $data, false);
            }
        }
    }
放置在视图中的我的JS代码

<script>

function searchFilter(page_num) {
    page_num = page_num?page_num:0;
    var keywords = $('#search').val();
    $.ajax({
        type: 'POST',
        url: 'url/AdminDocuments/Search/'+page_num,
        data:'page='+page_num+'&keywords='+keywords,
        beforeSend: function () {
            $('.loading').show();
        },
        success: function (html) {
            $('#list').html(html);
            $('.loading').fadeOut("slow");
        }
    });
}

function changeStatus(input){
    var id = input;
    $.ajax({
        type:'POST',
        url:'url/AdminDocuments/ChangeStatus/',
        data:'id='+id,
        beforeSend: function () {
            $('.loading').show();
        },
        success:function(result){
            console.log(result);
            searchFilter(0);
            $('.loading').fadeOut("slow");
        }
    });
}

function deleteDocument(input){
    var id = input;
    $.ajax({
        type:'POST',
        url:'url/AdminDocuments/Delete/',
        data:'id='+id,
        beforeSend: function () {
            $('.loading').show();
        },
        success:function(result){
            searchFilter(0);
            $('.loading').fadeOut("slow");
        }
    });
}
</script>
我假设$'list'.htmlhtml;代码在dom中加载html。您可以发送包含html以及登录状态的json,而不是直接从php发送html。像这样

$data = [
  'login_status' => 1 // or 0,
  'html' => $html // full html your are sending now
];

echo json_encode($data);
然后在ajax中获得成功

function searchFilter(page_num) {
    page_num = page_num?page_num:0;
    var keywords = $('#search').val();
    $.ajax({
        type: 'POST',
        url: 'url/AdminDocuments/Search/'+page_num,
        data:'page='+page_num+'&keywords='+keywords,
        beforeSend: function () {
            $('.loading').show();
        },
        success: function (response) {
            var data = $.parseJSON(response);

        if(data.login_status == 0)
        {
          window.location.href = 'redirect to login page';
        }

        if(data.login_status == 1)
        {
          $('#list').html(data.html);
        }
            $('.loading').fadeOut("slow");
        }
    });
}
控制器方法:

public function search(){
        if($this->input->is_ajax_request()){

                $conditions = array();
                $page = $this->input->post('page');
                if(!$page){
                    $offset = 0;
                }else{
                    $offset = $page;
                }
                $keywords = $this->input->post('keywords');
                if(!empty($keywords)){
                    $conditions['search']['keywords'] = $keywords;
                }
                $totalRec = count($this->DocumentModel->admin_get_and_search($conditions));
                $config['target']      = '#list';
                $config['base_url']    = site_url('/AdminDocuments/Search');
                $config['total_rows']  = $totalRec;
                $config['per_page']    = $this->get_per_page();
                $this->ajax_pagination->initialize($config);
                $conditions['start'] = $offset;
                $conditions['limit'] = $this->get_per_page();
                $data['links'] = $this->ajax_pagination->create_links();
                $data['datatable'] = $this->DocumentModel->admin_get_and_search($conditions);
                $data['current_page'] = $this->ajax_pagination->getCurrPage();
                $html = $this->load->view('admins/documents/ajax_pagination', $data, true);
    $res['html'] = $html;
    $res['login_status'] = ($this->logged_in()) ? '1' : '0';

       echo json_encode($res);

        }

你也可以发布你的js代码吗?当然可以。我的分页代码是从ajax分页库加载的,那里也有javascript;在dom中加载html。我尝试重定向“/Login”,但问题是它只重新加载列表容器。window.location会重新加载整个屏幕吗?是的,它会重新加载整个屏幕在php中重定向“/Login”,它只会发送整个登录页面以响应ajax,但如果在ajax响应之后执行此操作,即在success window.location中,它会重新加载整个页面。您好,感谢您的帮助。我已经尝试过window.location.href,但它仍然做同样的事情。它只是出于某种原因才重新加载容器。您是在ajax响应的成功块中这样做的吗?