如何从laravel网页中获取JSON格式的数据?

mwngjboj  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(196)

我用laravel做了一个网页,这个网页是用来存储课程,学生和一些数据的,现在我想用JSON格式获取信息,但是我不知道怎么做。
这里是我的function显示在我的控制器显示所有的学生存储在一个课程:

public function show(Course $course)
    {
        $students = $course->students()->get();
        return view('Course.show',compact('students','course'));
    }

出现在我的导航栏中的网址是:http://tfg.test/courses/25因为我是在本地做的。现在,如果我用 Postman 对那个url发出get请求,我会收到整个html页面,但没有JSON数据。我不知道这是怎么做的。
我试过这样做:

public function show(Course $course)
    {
        
        $students = $course->students()->get();
        
        return response()->json($students, 200);
        /* return view('Course.show',compact('students','course')); */
        
    }

我得到了JSON但是我没有去到网页中的视图
这是我在web.php中的路径:

Route::resource('courses', CourseController::class);

谢谢你。

1l5u6lss

1l5u6lss1#

你已经接近了,但是你需要返回视图或者return JSON,这取决于请求。Laravel有一个->ajax()方法,你可以用它来判断这是一个 AJAX 请求(即期望JSON)还是一个非AJAX请求(即期望view()来呈现):

public function show(Request $request, Course $course) {
  $students = $course->students; // `->students` is shorthand for `->students()->get()`

  if ($request->ajax()) {
    return response()->json($students, 200);
  }
        
  return view('Course.show', compact('students', 'course'));
}

不要忘记将use Illuminate\Http\Request;添加到控制器的顶部。
现在,当导航到http://tfg.test/courses/25时,您将得到渲染的view(),但是当发出 AJAX 请求时,您将得到返回为JSON$students

相关问题