Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

DataTable với Ajax không hoạt động tốt sau khi sử dụng serverSide:true

Các bảng dữ liệu gửi mọi thứ bạn cần - nếu bạn nhìn vào bảng điều khiển của mình trong mạng, bạn sẽ thấy rằng chúng sử dụng phương thức ajax-get để gửi những yêu cầu đó đến máy chủ

GET Tham số như sau

draw
columns
start
length
search

có nghĩa là - bạn phải điều chỉnh mô hình của mình một cách thích hợp ...

một cái gì đó như vậy sẽ hoạt động

public function all_user_request($task_id) 
{
    $intStart = intval($this->input->get("start"));
    $intLength = intval($this->input->get("length"));
    $strSearch = (strlen($this->input->get("search")["value"]) >= 2) ?   $this->input->get("search",true)["value"]    :   false;
    $order = $this->input->get("order",true);


    $this->setQuery($task_id,$strSearch);

    $query = $this->db->get();
    $this->recordsTotal = $query->num_rows();

    $this->setQuery($task_id, $strSearch);

    if ($intStart >= 0 && $intLength > 0)
    {
        $this->db->limit($intLength,$intStart);
    }

    $strOrderField = 'username';
    $strDirection = "ASC";
    if (is_array($order))
    {
        switch($order[0]['column'])
        {
            case 1:
                $strOrderField = 'type';
                break;
            case 2:
                $strOrderField = 'request';
                break;

        }
        if (!empty($order[0]['dir']))    $strDirection = $order[0]['dir'];
    }
    $this->db->order_by($strOrderField,$strDirection);


    $query = $this->db->get();

    $arrData = $query->result();

    return $arrData;

}

public function getRecordsTotal()
{
    return $this->recordsTotal;
}

private function setQuery($task_id, $strSearch="")
{
    $this->db
        ->select('*')
        ->from('user_request')
        ->where('task_id', $task_id);

    if (!empty($strSearch))
    {
        $this->db->like('task_id', $strSearch);
    }

}

và bộ điều khiển của bạn

//controller
$task = $this->input->post('task', TRUE);
$user_request = $this->model->all_user_request($task);

$data = [];
foreach ($user_request as $ur)
{
    $data[] = [
        $ur->username,
        $ur->type,
        $ur->request
    ];
}

$arrCompiledData = [
    'data' => $data,
    'draw' => $this->input->get('draw'),
    'recordsTotal' => $this->model->getRecordsTotal(),
    'recordsFiltered' => $this->model->getRecordsTotal(),
];

$this->output
    ->set_content_type('application/json')
    ->set_output(json_encode($arrCompiledData));

Xin lưu ý rằng tôi vừa viết ra điều này - có thể có một số lỗi chính tả, nhưng bạn sẽ có thể hiểu cách xử lý phía máy chủ của một yêu cầu dữ liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách xóa giá trị trùng lặp được phân tách bằng dấu phẩy trong một cột trong MySQL

  2. Phân vùng bảng cơ sở dữ liệu trong MySQL

  3. MySql:có thể 'SUM IF' hoặc 'COUNT IF' không?

  4. Cách TỰ ĐỘNG cập nhật MySQL sau khi trường dấu thời gian expierd

  5. Sử dụng Bảng chính cho các cột được chia sẻ có phải là phương pháp tốt cho toàn bộ cơ sở dữ liệu không?