我用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);
谢谢你。
1条答案
按热度按时间1l5u6lss1#
你已经接近了,但是你需要返回视图或者return
JSON
,这取决于请求。Laravel有一个->ajax()
方法,你可以用它来判断这是一个 AJAX 请求(即期望JSON
)还是一个非AJAX请求(即期望view()
来呈现):不要忘记将
use Illuminate\Http\Request;
添加到控制器的顶部。现在,当导航到
http://tfg.test/courses/25
时,您将得到渲染的view()
,但是当发出 AJAX 请求时,您将得到返回为JSON
的$students
。