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

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

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

6年前 评论
讨论数量: 5

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

6年前 评论

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

6年前 评论

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

6年前 评论

@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);
}
.
.
.

6年前 评论
leo

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

6年前 评论

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