Php 如何通过Laravel中的jquery Datatable检索和显示数据?
基本上,我的目的是从数据库中获取数据,并使用Laravel5.2中的DataTableAPI显示数据。然而,我一直收到这个错误/注意Php 如何通过Laravel中的jquery Datatable检索和显示数据?,php,jquery,datatable,datatables,laravel-5.2,Php,Jquery,Datatable,Datatables,Laravel 5.2,基本上,我的目的是从数据库中获取数据,并使用Laravel5.2中的DataTableAPI显示数据。然而,我一直收到这个错误/注意DataTables警告:table id=payments table-Ajax错误。有关此错误的更多信息,请参见http://datatables.net/tn/7 请注意,我已经按照这里的指示设置了我的开发环境:(用于Laravel 4 | 5的jQuery DataTables API) 我的表名是payments 这是我的路线代码: Route::cont
DataTables警告:table id=payments table-Ajax错误。有关此错误的更多信息,请参见http://datatables.net/tn/7
请注意,我已经按照这里的指示设置了我的开发环境:(用于Laravel 4 | 5的jQuery DataTables API)
我的表名是payments
这是我的路线代码:
Route::controller('payments', 'admin\paymentsController', [
'anyData' => 'payments.data',
'getIndex' => 'datatables',
]);
然后管理员文件夹中的控制器代码:
<?php
namespace App\Http\Controllers\admin;
use App\Http\Controllers\Controller;
use DB;
use Illuminate\Http\Request;
use App\Http\Requests;
use Yajra\Datatables\Datatables;
class paymentsController extends Controller
{
/**
* Displays datatables front end view
*
* @return \Illuminate\View\View
*/
public function getIndex()
{
return view('admin.payments', compact('payments'));
}
/**
* Process datatables ajax request.
*
* @return \Illuminate\Http\JsonResponse
*/
public function anyData()
{
return Datatables::of(payments::query())->make(true);
}
}
试试这个例子:
JS:
控制器功能:
public function getusers()
{
$start = $_REQUEST['iDisplayStart'];
$length = $_REQUEST['iDisplayLength'];
$sSearch = $_REQUEST['sSearch'];
$col = $_REQUEST['iSortCol_0'];
$arr = array(0 => 't1.name', 2 => 't3.name');
$sortBy = $arr[$col];
$sortType = $_REQUEST['sSortDir_0'];
$getRoles = "select t1.id, t1.name as user_name, t1.email, t3.id as role_id, t3.name as role FROM users t1 JOIN role_user t2 ON t1.id = t2.user_id JOIN roles t3 on t2.role_id = t3.id where t1.status = '1' ".$userFilter.$condition." ORDER BY ".$sortBy." ".$sortType." LIMIT ".$start.", ".$length;
$getRoles = DB::select(DB::raw($getRoles));
// Get all data into an array
foreach($getRoles as $result)
{
$data[] = (array)$result;
}
$iTotal = 0;
$getUserRoleCount = "select id from roles";
$userRoleCount = DB::select(DB::raw($getUserRoleCount));
$iTotal = count($userRoleCount);
$rec = array(
'iTotalRecords' => $iTotal,
'iTotalDisplayRecords' => $iTotal,
'aaData' => array()
);
$k=0;
if (isset($data) && is_array($data)) {
foreach ($data as $item) {
$rec['aaData'][$k] = array(
0 => ucwords(strtolower($item['user_name'])),
1 => $item['email'],
2 => ucwords(strtolower($item['role'])),
3 => '<button id="'.$item['id'].'" name="'.$item['user_name'].'" email="'.$item['email'].'" role="'.$item['role_id'].'" class="btn btn-xs btn-info edit_user" href="javascript:void(0);"><i class="fa fa-edit"></i>User</button>'.' '.'<button id="'.$item['id'].'" role="'.$item['role_id'].'" class="btn btn-xs btn-info edit_permission" href="javascript:void(0);"><i class="fa fa-edit"></i>Permission</button>'
);
$k++;
}
}
echo json_encode($rec);
}
公共函数getusers()
{
$start=$_请求['iDisplayStart'];
$length=$_请求['iDisplayLength'];
$sSearch=$_请求['sSearch'];
$col=$\u请求['iSortCol\u 0'];
$arr=array(0=>'t1.name',2=>'t3.name');
$sortBy=$arr[$col];
$sortType=$_请求['sSortDir_0'];
$getRoles=“选择t1.id,t1.name作为用户名,t1.email,t3.id作为角色,t3.name作为角色,t1.id上的用户t1加入角色(用户t2)t1.id=t2.user(用户)id加入t2上的角色t3.id,其中t1.status='1'。$userFilter.$condition.”订单依据“$sortBy.”$sortType.“限制”.“$start.”,“,$length;
$getRoles=DB::select(DB::raw($getRoles));
//将所有数据放入数组中
foreach($getRoles as$result)
{
$data[]=(数组)$result;
}
$iTotal=0;
$getUserRoleCount=“从角色中选择id”;
$userRoleCount=DB::select(DB::raw($getUserRoleCount));
$iTotal=计数($userRoleCount);
$rec=数组(
“iTotalRecords”=>$iTotal,
“iTotalDisplayRecords”=>$iTotal,
'aaData'=>array()
);
$k=0;
if(isset($data)和is_数组($data)){
foreach($数据作为$项){
$rec['aaData'][$k]=数组(
0=>ucwords(strtolower($item['user\u name']),
1=>$item['email'],
2=>ucwords(strtolower($item['role']),
3=>“用户”。“权限”
);
$k++;
}
}
echo json_编码($rec);
}
我用的是同样的,而且很好用。Ooh(叹气)最后,我解决了我的麻烦
好吧,为了那些想知道怎么做的人,在我的控制器课上
我更改了returndatatables::of(payments::query())->make(true)代码>
返回Datatables::of(DB::table('payments')->make(true)代码>
我不太确定,但我想一开始我无法从数据库中获取数据
因此,我的控制器类变成:
<?php
namespace App\Http\Controllers\admin;
use App\Http\Controllers\Controller;
use DB;
use Illuminate\Http\Request;
use App\Http\Requests;
use Yajra\Datatables\Datatables;
class paymentsController extends Controller
{
/**
* Displays datatables front end view
*
* @return \Illuminate\View\View
*/
public function getIndex()
{
return view('admin.payments', compact('payments'));
}
/**
* Process datatables ajax request.
*
* @return \Illuminate\Http\JsonResponse
*/
public function anyData()
{
return Datatables::of(DB::table('payments'))->make(true);
}
}
谢谢,我会用你的方式回去的。不过,我已经找到了解决办法。尽管如此,知道两种或三种方法并没有坏处。在像您这样的情况下,检查实际的ajax响应总是一个好主意。例如,如果您使用的是Firefox,则可以使用Firebug。
public function getusers()
{
$start = $_REQUEST['iDisplayStart'];
$length = $_REQUEST['iDisplayLength'];
$sSearch = $_REQUEST['sSearch'];
$col = $_REQUEST['iSortCol_0'];
$arr = array(0 => 't1.name', 2 => 't3.name');
$sortBy = $arr[$col];
$sortType = $_REQUEST['sSortDir_0'];
$getRoles = "select t1.id, t1.name as user_name, t1.email, t3.id as role_id, t3.name as role FROM users t1 JOIN role_user t2 ON t1.id = t2.user_id JOIN roles t3 on t2.role_id = t3.id where t1.status = '1' ".$userFilter.$condition." ORDER BY ".$sortBy." ".$sortType." LIMIT ".$start.", ".$length;
$getRoles = DB::select(DB::raw($getRoles));
// Get all data into an array
foreach($getRoles as $result)
{
$data[] = (array)$result;
}
$iTotal = 0;
$getUserRoleCount = "select id from roles";
$userRoleCount = DB::select(DB::raw($getUserRoleCount));
$iTotal = count($userRoleCount);
$rec = array(
'iTotalRecords' => $iTotal,
'iTotalDisplayRecords' => $iTotal,
'aaData' => array()
);
$k=0;
if (isset($data) && is_array($data)) {
foreach ($data as $item) {
$rec['aaData'][$k] = array(
0 => ucwords(strtolower($item['user_name'])),
1 => $item['email'],
2 => ucwords(strtolower($item['role'])),
3 => '<button id="'.$item['id'].'" name="'.$item['user_name'].'" email="'.$item['email'].'" role="'.$item['role_id'].'" class="btn btn-xs btn-info edit_user" href="javascript:void(0);"><i class="fa fa-edit"></i>User</button>'.' '.'<button id="'.$item['id'].'" role="'.$item['role_id'].'" class="btn btn-xs btn-info edit_permission" href="javascript:void(0);"><i class="fa fa-edit"></i>Permission</button>'
);
$k++;
}
}
echo json_encode($rec);
}
<?php
namespace App\Http\Controllers\admin;
use App\Http\Controllers\Controller;
use DB;
use Illuminate\Http\Request;
use App\Http\Requests;
use Yajra\Datatables\Datatables;
class paymentsController extends Controller
{
/**
* Displays datatables front end view
*
* @return \Illuminate\View\View
*/
public function getIndex()
{
return view('admin.payments', compact('payments'));
}
/**
* Process datatables ajax request.
*
* @return \Illuminate\Http\JsonResponse
*/
public function anyData()
{
return Datatables::of(DB::table('payments'))->make(true);
}
}