Php 如何通过Laravel中的jquery Datatable检索和显示数据?

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

基本上,我的目的是从数据库中获取数据,并使用Laravel5.2中的DataTableAPI显示数据。然而,我一直收到这个错误/注意
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>'.'&nbsp;&nbsp;'.'<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>'.'&nbsp;&nbsp;'.'<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);
    }
}