sql >> データベース >  >> RDS >> Mysql

serverSideを使用した後、Ajaxを使用したDataTableが正常に機能しない:true

    Datatablesは、必要なものをすべて送信します。コンソールのネットワークの下を見ると、ajax-getメソッドを使用してそれらのリクエストをサーバーに送信していることがわかります

    GET パラメータは次のとおりです

    draw
    columns
    start
    length
    search
    

    つまり、モデルを適切に適合させる必要があります...

    そのようなものが機能するはずです

    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);
        }
    
    }
    

    とコントローラー

    //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));
    

    これを書き留めたばかりであることに注意してください。タイプミスがあるかもしれませんが、datatablesリクエストのサーバー側処理がどのように機能するかを理解できるはずです。



    1. PHP-ログインシステムでメンバー専用ページを保護する

    2. SQL ServerでCHECK制約が列レベルかテーブルレベルかを確認します(T-SQLの例)

    3. 複数の行を挿入すると、重複はどうなりますか?

    4. AccessはODBCデータソースとどのように通信しますか?パート5