Laravel处理AJAX请求需定义路由、控制器返回JSON、前端发送请求并处理响应,注意CSRF保护与跨域配置。

Laravel 处理 AJAX 请求和响应非常方便,结合其强大的路由、控制器和响应机制,可以快速构建前后端分离或局部刷新的动态功能。下面详细介绍如何在 Laravel 中处理 AJAX 请求与返回 JSON 响应。
Laravel 中可以通过 routes/web.php 定义处理 AJAX 请求的路由。建议将 AJAX 相关路由分组或加上前缀如 api 或使用独立文件 routes/api.php。
示例:
// routes/web.php
Route::post('/submit-form', [FormController::class, 'handleAjax'])->name('ajax.submit');
如果你希望自动返回 JSON 并省略 session 验证,推荐使用 api.php 路由文件,所有路由默认无状态并以 /api 开头。
在控制器方法中,接收 AJAX 发送的数据,并使用 response()->json() 返回结构化数据。
示例控制器代码:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FormController extends Controller
{
public function handleAjax(Request $request)
{
// 验证数据
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email',
]);
// 模拟处理逻辑(如保存数据库)
// User::create($validated);
return response()->json([
'success' => true,
'message' => '数据提交成功!',
'data' => $validated
]);
}
}
如果发生错误,也可以返回错误信息:
return response()->json([
'success' => false,
'message' => '验证失败',
'errors' => $validator->errors()
], 422);
前端可通过 jQuery 的 $.ajax() 方法发送请求。确保设置 Content-Type 为 application/json,并正确传递 CSRF Token(如果是 web 路由)。
HTML 表单示例:
<form id="ajaxForm">
<input type="text" name="name" required>
<input type="email" name="email" required>
<button type="submit">提交</button>
</form>
<div id="result"></div>
JavaScript 代码:
$('#ajaxForm').on('submit', function(e) {
e.preventDefault();
$.ajax({
url: '/submit-form',
method: 'POST',
data: {
name: $('input[name="name"]').val(),
email: $('input[name="email"]').val(),
_token: '{{ csrf_token() }}'
},
success: function(response) {
$('#result').html('<span style="color:green;">' + response.message + '</span>');
},
error: function(xhr) {
let errors = xhr.responseJSON.errors;
let msg = '';
$.each(errors, function(key, value) {
msg += value[0] + '<br>';
});
$('#result').html('<span style="color:red;">' + msg + '</span>');
}
});
});
如果前端是独立应用(如 Vue、React),可能涉及跨域问题。可使用 Laravel Sanctum 或 CORS 配置解决。
安装 fruitcake/laravel-cors 并配置中间件允许跨域请求。
或者在 app/Http/Middleware/TrustProxies.php 和 config/cors.php 中设置允许的域名。
基本上就这些。Laravel 对 AJAX 支持良好,只需注意 CSRF 保护、数据验证和返回 JSON 格式即可。不复杂但容易忽略细节。
以上就是laravel如何处理AJAX请求和响应_Laravel AJAX请求与响应处理教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号