Поиск данных в jquery php [codeigniter] не работает - PullRequest
0 голосов
/ 05 декабря 2018

Я использую jquery datables для отображения некоторых акций.По умолчанию все акции отображаются, но когда я набираю текст в поле поиска, ничего не происходит, я также проверяю консоль, нет ли ошибки, пожалуйста, помогите мне.Вот некоторый код:

stock.js

$('#view-stock').DataTable({
    serverSide:true,
    searchable:true,
    ajax:{
        url:base_url+"stock/get_stock",
    }..and so on

stock_controller:

public function get_stock(){
    $stock['data']=$this->Stock_model->get_stock();
    if(isset($_GET['search[value]'])){
        $stock['data']=$this->Stock_model->get_stock($_GET['search[value]']);
    }
    $stock=json_encode($stock);
    print_r($stock);
}

акциимодель:

public function get_stock($search=null){
            $this->db->order_by('id','desc');
            if($search!=null){
                $this->db->like('p_name', $search);
                $stock=$this->db->get('stockdetail');
            }else{
                $stock=$this->db->get('stockdetail');
            }
            if($stock){
                return $stock->result_array();
            }
            return false;
}

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

попробуйте это: я надеюсь, что это поможет вам.// js

 var dtable = $('#view-stock').DataTable({
            processing: true,
            serverSide: false,
            searching: true,
            dom: 'lBfrtip',
            lengthMenu: [[5, 10, 25, 50, 100, -1], [5, 10, 25, 50, 100, "All"]],
            pageLength: 10,
            buttons: [
                'csv', 'print'
            ],
            ajax: {
                "url": base_url + "/stock/datatables",
                'method': 'POST',
                'data': function (d) {
                    d._token = $("input[name=_token]").val();
                }
            }
//controller


 function index() {
        $data = array();
        $data['view'] = 'view_page_name';
      $this->load->view('header', $data);
    }
     function datatables() {
            $data = array();
            $stock =$this->Stock_model->get_stock($this->input->post());
            parent::json_output(["draw" => intval($this->input->post('draw')), "recordsTotal" => $stock[1], "recordsFiltered" =>$stock[1], "data" => $stock[0]]);
            return;
        }

// модель

function get_stock($requestArray) {

        if (isset($requestArray['keyword']) && $requestArray['keyword'] != '') {
            $this->db->where .= " AND (field_name_by_which_you_want_search LIKE '%" . $requestArray['keyword'] . "%')";
            $this->db->where .= " AND (field_name_by_which_you_want_search LIKE '%" . $requestArray['keyword'] . "%')";
        }
        $this->db->where($where);
        if ($this->input->post('length') != '-1') {
            $this->db->limit($this->input->post('length'), $this->input->post('start'));
        }
 $this->db->order_by('id','desc');
        $query = $result->get('stockdetail')->result_array();

        $count = $result->get('stockdetail')->num_rows();
        return [$query, $count];
    }
0 голосов
/ 05 декабря 2018

$_GET - это массив.'search' - это ключ, который содержит другой массив, поэтому вы неправильно обращались к параметрам.Измените это:

if(isset($_GET['search[value]'])){
    $stock['data']=$this->Stock_model->get_stock($_GET['search[value]']);
}

На:

if(isset($_GET['search']['value'])){
    $stock['data']=$this->Stock_model->get_stock($_GET['search']['value']);
}

Кроме того, я не уверен, что возвращает ваш метод, но если вы выполняете обработку на стороне сервера, вы должны убедиться, что это jsonв правильном формате - примерно:

$json = json_encode(array(
    'data'              => $results,
    'draw'              => (int)$_GET['draw'],
    'recordsTotal'      => // total records in unfiltered result set,
    'recordsFiltered'   => // number of records returned
));

Если ваш набор результатов пуст, вы все равно должны вернуть результаты в этом формате и просто отправить пустой массив с ключом data. Не возвращать false - это приведет к тому, что DataTables выдаст ошибку, так как это неверный ответ.Узнайте больше об обработке на стороне сервера в таблицах данных здесь: https://datatables.net/manual/server-side

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...