如果是 Ajax 请求,则通过 JSON 返回,这个代码不明白,能讲解一下吗?

// 如果是 AJAX 请求,则通过 JSON 返回
if ($request->expectsJson()) {
return response()->json(['msg' => '请先验证邮箱'], 400);
}

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

如果没有这段代码,当一个没有验证邮箱的用户使用 AJAX 请求接口时,那么返回的是一个 302 跳转,302 跳转对于 AJAX 请求来说并不会让浏览器本身跳转到新页面,那就导致用户看不到错误提示

5年前 评论
讨论数量: 5

laravel默认return返回的就是json格式的数据。直接return['msg'=>'XXX','data'=>‘XXX’]就可以了。

5年前 评论

@loveinalife 你好, 我不懂为什么要判断ajax请求呢

5年前 评论

不清楚你这串代码的运用场景是什么?

5年前 评论

@loveinalife
app/Http/Middleware/CheckIfEmailVerified.php
.
.
.
public function handle($request, Closure $next)
{
if (!$request->user()->email_verified) {
// 如果是 AJAX 请求,则通过 JSON 返回
if ($request->expectsJson()) {
return response()->json(['msg' => '请先验证邮箱'], 400);
}
return redirect(route('email_verify_notice'));
}
return $next($request);
}
.
.
.

5年前 评论
leo

如果没有这段代码,当一个没有验证邮箱的用户使用 AJAX 请求接口时,那么返回的是一个 302 跳转,302 跳转对于 AJAX 请求来说并不会让浏览器本身跳转到新页面,那就导致用户看不到错误提示

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!