Я новичок с jQuery и Ajax, но я нашел примерную комбинацию с использованием CodeIgniter и datatables. Я попробовал это так же, как пример, но мои данные не показывались.Datatables не показывают
Контроллер
class User extends CI_Controller {
private $content;
private $data;
function __construct(){
parent::__construct();
$this->load->model('usermodel');
$this->init();
}
function init(){
if($this->session->userdata('username') == '') redirect('auth');
$this->data['username'] = $this->session->userdata('username');
}
function index(){
//$this->content = $this->load->view('userListView', null, true);
$this->content = 'users';
$this->data['content'] = $this->content;
//$this->data['users'] = json_encode($this->usermodel->getDataTable());
$this->load->view('home', $this->data);
}
function data() {
//print_r($this->usermodel->getDataTable());
echo json_encode($this->usermodel->getDataTable());
exit;
}
Модель
class Usermodel extends CI_Model {
function getListALL(){
$strSQL = "SELECT * FROM mst_user";
$qData = $this->db->query($strSQL);
return $qData;
}
function getSingle($user_id){
$strSQL = "SELECT * FROM mst_user WHERE id = '" . $user_id . "'";
$qData = $this->db->query($strSQL);
return $qData;
}
function getDataTable() {
$sTable = "mst_user";
$aColumns = array('id', 'username', 'fullname', 'email');
$sIndexColumn = "id";
/*
* Paging
*/
$sLimit = "";
if (isset($_POST['iDisplayStart']) && $_POST['iDisplayLength'] != '-1'){
$sLimit = "LIMIT ".addslashes($_POST['iDisplayStart']).", " . addslashes($_POST['iDisplayLength']);
}
/*
* Ordering
*/
$sOrder = "";
if (isset($_POST['iSortCol_0']))
{
$sOrder = "ORDER BY ";
for ($i=0 ; $i<intval($_POST['iSortingCols']) ; $i++)
{
if ($_POST[ 'bSortable_'.intval($_POST['iSortCol_'.$i]) ] == "true")
{
$sOrder .= "`".$aColumns[ intval($_POST['iSortCol_'.$i]) ]."` ".
addslashes($_POST['sSortDir_'.$i]) .", ";
}
}
$sOrder = substr_replace($sOrder, "", -2);
if ($sOrder == "ORDER BY")
{
$sOrder = "";
}
}
/*
* Filtering
* NOTE this does not match the built-in DataTables filtering which does it
* word by word on any field. It's possible to do here, but concerned about efficiency
* on very large tables, and MySQL's regex functionality is very limited
*/
$sWhere = "";
if (isset($_POST['sSearch']) && $_POST['sSearch'] != "")
{
$sWhere = "WHERE (";
for ($i=0 ; $i<count($aColumns) ; $i++)
{
$sWhere .= "`".$aColumns[$i]."` LIKE '%".addslashes($_POST['sSearch'])."%' OR ";
}
$sWhere = substr_replace($sWhere, "", -3);
$sWhere .= ')';
}
//echo $sWhere;exit;
/* Individual column filtering */
for ($i=0 ; $i<count($aColumns) ; $i++)
{
if (isset($_POST['bSearchable_'.$i]) && $_POST['bSearchable_'.$i] == "true" && $_POST['sSearch_'.$i] != '')
{
if ($sWhere == "")
{
$sWhere = "WHERE ";
}
else
{
$sWhere .= " AND ";
}
$sWhere .= "`".$aColumns[$i]."` LIKE '%".addslashes($_POST['sSearch_'.$i])."%' ";
}
}
/*
* SQL queries
* Get data to display
*/
$sQuery = "SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."` FROM $sTable $sWhere $sOrder $sLimit";
//$rResult = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
$stmt = $this->db->query($sQuery);
//$stmt->setFetchMode(Zend_Db::FETCH_BOTH);
$rResult = $stmt->result_array();
//return $rResult;
//echo $sQuery;exit;
/* Data set length after filtering */
$sQuery = " SELECT FOUND_ROWS() as FR";
//$rResultFilterTotal = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
$stmt = $this->db->query($sQuery);
//$stmt->setFetchMode(Zend_Db::FETCH_BOTH);
//$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
$aResultFilterTotal = $stmt->result();
//return $aResultFilterTotal;
//$aResultFilterTotal = $stmt->fetchAll();
$iFilteredTotal = $aResultFilterTotal[0]->FR;
//echo $iFilteredTotal;exit;
//print_r($aResultFilterTotal);exit;
/* Total data set length */
$sQuery = "SELECT COUNT(`".$sIndexColumn."`) as total FROM $sTable";
//$rResultTotal = mysql_query($sQuery, $gaSql['link']) or die(mysql_error());
//echo $sQuery;exit;
$stmt = $this->db->query($sQuery);
//$stmt->setFetchMode(Zend_Db::FETCH_BOTH);
//$aResultTotal = mysql_fetch_array($rResultTotal);
$aResultTotal = $stmt->result();
$iTotal = $aResultTotal[0]->total;
//echo $iTotal;exit;
/*
* Output
*/
/* if(isset($_POST['sEcho'])) $sEcho = intval($_POST['sEcho']);
else $sEcho = '';*/
$output = array(
"sEcho" => intval($_POST['sEcho']),
"iTotalRecords" => $iTotal,
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array()
);
foreach ($rResult as $aRow)
{
$row = array();
for ($i=0 ; $i<count($aColumns) ; $i++)
{
if ($aColumns[$i] == "version")
{
/* Special output formatting for 'version' column */
$row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ];
}
else if ($aColumns[$i] != ' ')
{
/* General output */
$row[] = $aRow[ $aColumns[$i] ];
}
}
$output['aaData'][] = $row;
}
return $output;
}
}
Просмотр
<script type="text/javascript">
$(document).ready(function() {
$(".button").button();
$('#table_list').dataTable({
"bJQueryUI": true,
"bServerSide": true,
"sServerMethod": "POST",
"sPaginationType": "full_numbers",
"sAjaxSource": "<?php echo base_url();?>index.php/user/data"
});
});
</script>
<?php //echo $users;?>
<form class="form_element" action="">
<div id="content_header"><h2>User - List</h2></div>
<div style="float:right;padding-bottom:5px">
<input type="button" value="Create New Record" onclick="window.location='user/form/add'" class="button">
</div>
<hr>
<table id="table_list">
<thead>
<tr>
<td>ID</td>
<td width="200">User Name</td>
<td>Full Name</td>
<td>Email</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
</form>
Главная вид
<html>
<head>
<title>Admin MOS Template</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Copyright" content="">
<meta name="description" content="Admin MOS Template">
<meta name="keywords" content="Admin Page">
<meta name="author" content="">
<meta name="language" content="Bahasa Indonesia">
<link rel="shortcut icon" href="stylesheet/img/devil-icon.png"> <!--Pemanggilan gambar favicon-->
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>include/mos_admin/mos-css/mos-style.css"> <!--pemanggilan file css-->
<link type="text/css" href="<?php echo base_url(); ?>include/css/jquery.dataTables.css" rel="Stylesheet" />
<link type="text/css" href="<?php echo base_url(); ?>include/css/smoothness/jquery-ui-1.8.19.custom.css" rel="Stylesheet" />
<script type="text/javascript" src="<?php echo base_url(); ?>include/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<?php echo base_url(); ?>include/js/jquery.dataTables.min.js"></script>
</head>
<body>
<?php
//print_r($users);
//echo $strFormType;
?>
<div id="header">
<div class="inHeader">
<div class="mosAdmin">
<?php $this->load->view('headerview');?>
</div>
<div class="clear"></div>
</div>
</div>
<div id="wrapper">
<div id="leftBar">
<?php $this->load->view('leftBarview'); ?>
</div>
<div id="rightContent">
<?php
if($content == 'changepass'){
$this->load->view('changepassview');
}
else if($content == 'form'){
$this->load->view('userformview');
}
else if($content == 'users'){
$this->load->view('userlistview');
}
else{
$this->load->view('rightContentview');
}
?>
</div>
<div class="clear"></div>
<div id="footer">
<?php $this->load->view('footerview'); ?>
</div>
</div>
</body>
</html>
Не включайте index.php при вызове: PHP эхо base_url();> index.php/данные пользователя. Используйте только: Php echo base_url ('user/data');?> –
какая ошибка вы получаете? – Ayoub
Что именно не хватает Донни? – goseo