sql >> Databasteknik >  >> RDS >> Mysql

DataTable med Ajax fungerar inte bra efter användning serverSide:sant

Datatabeller skickar allt du behöver - om du tittar i din konsol under nätverk ser du att de använder ajax-get-metoden för att skicka dessa förfrågningar till servern

GET Parametrarna är som följer

draw
columns
start
length
search

vilket betyder - du måste anpassa din modell ordentligt...

något sådant borde fungera

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

}

och din handkontroll

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

Kom ihåg att jag precis skrev ner det här - det kanske finns några stavfel, men du borde kunna förstå hur serversidans bearbetning av en datatabellförfrågan ska fungera.



  1. FEL:SQLSTATE[HY000] [2002] Ingen anslutning kunde göras eftersom måldatorn aktivt vägrade det

  2. Hur Div() fungerar i PostgreSQL

  3. Vad är Microsoft Access och vad använder du det till?

  4. Jämför datum i MySQL