【问题标题】:Laravel controller not outputting content as real JSONLaravel 控制器未将内容输出为真正的 JSON
【发布时间】:2018-10-13 19:30:50
【问题描述】:

我的Laravel 应用程序上有以下控制器:

class ProjectController extends Controller {
    ...
    public function index() {
        $projects = Project::where('is_completed', false)
            ->orderBy('created_at', 'desc')
            ->withCount(['tasks' => function ($query) {
                $query->where('is_completed', false);
            }])->get();
        return $projects->toJson(JSON_PRETTY_PRINT);
    }
    ...
}

被以下路由引用:

Route::get('projects', 'ProjectController@index');

我的问题是当我转到网址时:

https://127.0.0.1/api/projects

然后我得到了预期的结果,但内容类型不是JSON,如下所示(它是HTML):

知道如何将内容输出为真实的JSON 内容吗?

谢谢!

【问题讨论】:

    标签: php json laravel eloquent laravel-5.7


    【解决方案1】:

    代替:

    $projects = Project::where('is_completed', false)
        ->orderBy('created_at', 'desc')
        ->withCount(['tasks' => function ($query) {
            $query->where('is_completed', false);
        }])->get();
    return $projects->toJson(JSON_PRETTY_PRINT);
    

    你应该使用:

    return response()->json(Project::where('is_completed', false)
        ->orderBy('created_at', 'desc')
        ->withCount(['tasks' => function ($query) {
            $query->where('is_completed', false);
        }])->get());
    

    看看Json response in documentation的例子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      相关资源
      最近更新 更多