【问题标题】:Invalid JSON response on Laravel 5.2 and yajra/laravel-datatables-oracleLaravel 5.2 和 yajra/laravel-datatables-oracle 上的 JSON 响应无效
【发布时间】:2016-06-01 09:28:49
【问题描述】:

我的问题与Yajra Datatables Package for Laravel deosnt work properly with laravel 5.2非常相似

我在 Chrome 上收到无效的 JSON 响应,但我无法查看 HTTP 调用响应。

这是我的控制器

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Office;
use Datatables;

class OfficeController extends Controller
{
    public function index()
    {
        return view('offices.index', ['page_title' => 'Jabatan']);
    }

    public function data()
    {
        $offices = Office::select(['id', 'title']);

        return Datatables::of($offices)->make(true);
    }

...

我的脚本

$(function() {
    $('#offices-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: '{!! route('offices.data') !!}',
        columns: [
            { data: 'id', name: 'id' },
            { data: 'title', name: 'title' }
        ]
    });
});

【问题讨论】:

  • 您可以在 chrome 开发工具(网络选项卡)中查看您的 ajax 调用的响应
  • @SylvainGuilbert 我试过了,但 chrome 总是告诉我:这个请求没有可用的响应数据
  • 复制粘贴你的ajax url到另一个页面
  • @SylvainGuilbert 我做了,但它什么也没返回
  • 嗯....这就是为什么

标签: laravel datatables


【解决方案1】:

首先你必须检查你的函数究竟返回了什么。所以我建议你先这样修改它

public function data()
{
    $offices = Office::select(['id', 'title']);

    dd(Datatables::of($offices)->make(true));
}

然后在您的浏览器中转到指向此功能的 URL,或使用检查器查看您在那里获得的内容。我想它会帮助你找出问题所在。

如果它会显示预期结果,请尝试像这样修改您的函数:

public function data()
{
    $offices = Office::select(['id', 'title']);

    return new JsonResponse(Datatables::of($offices)->make(true));
}

别忘了添加

use Illuminate\Http\JsonResponse;

控制器类定义之前的语句。

【讨论】:

  • 我做了你的建议,但结果还是一样。仅供参考,我在 Laravel 日志文件和 NGINX error.log 中没有发现错误
  • 那么 dd();如果您在浏览器中打开 url,函数会显示您?
猜你喜欢
  • 1970-01-01
  • 2016-09-05
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 2021-11-28
  • 2019-03-08
相关资源
最近更新 更多