You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中使用AJAX验证输入数据(附代码示例)

在Laravel中使用AJAX实现输入数据验证

咱们一步步来实现这个无刷新的输入验证功能,通过AJAX把表单数据提交到Laravel后端,实时完成验证并返回结果。

一、后端配置

1. 控制器处理逻辑

首先在PostsController里添加testAjax方法,负责接收AJAX请求并完成验证逻辑:

public function testAjax(Request $request) {
    $name = $request->input('name');
    // 创建验证规则:name字段为必填项
    $validator = Validator::make($request->all(), ['name' => 'required']);
    
    if ($validator->fails()){
        // 验证失败时返回JSON格式的错误信息
        $errors = $validator->errors();
        return response()->json(['errors' => $errors], 422);
    } else{
        // 验证成功时返回JSON格式的欢迎消息
        return response()->json(['success' => "welcome ". $name]);
    }
}

这里我优化了原代码:用response()->json()返回标准JSON数据,比直接echo更规范,前端处理起来也更顺畅。

2. 路由配置

在routes/web.php里添加对应的路由,一个用来展示表单页面,一个用来处理AJAX验证请求:

// 返回AJAX表单视图
Route::get('/home' , function(){
    return view('ajaxForm');
});
// 处理AJAX验证请求
Route::post('/verifydata', 'PostsController@testAjax');

二、前端视图实现

接下来完善ajaxForm.blade.php的代码,包含表单结构和AJAX提交逻辑(补全了你提供的不完整代码):

<!DOCTYPE html>
<html>
<head>
    <title>AJAX验证示例</title>
    <!-- 引入jQuery,简化AJAX操作 -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- 引入Laravel CSRF令牌,用于请求安全验证 -->
    <meta name="csrf-token" content="{{ csrf_token() }}">
</head>
<body>
    <form id="ajaxForm">
        <div>
            <label>姓名:</label>
            <input type="text" name="name" id="name">
            <!-- 用来展示错误或成功提示 -->
            <div id="feedback"></div>
        </div>
        <button type="submit">提交</button>
    </form>

    <script>
        // 全局设置AJAX请求的CSRF令牌头,避免Laravel拦截请求
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

        // 监听表单提交事件
        $('#ajaxForm').submit(function(e){
            // 阻止表单默认的刷新提交行为
            e.preventDefault();
            
            // 获取输入框的内容
            var nameValue = $('#name').val();
            
            // 发送AJAX POST请求
            $.ajax({
                url: '/verifydata',
                type: 'POST',
                data: {name: nameValue},
                success: function(response){
                    // 验证成功时展示绿色的欢迎消息
                    $('#feedback').html('<span style="color:green;">' + response.success + '</span>');
                },
                error: function(response){
                    // 验证失败时展示红色的错误提示
                    $('#feedback').html('<span style="color:red;">' + response.responseJSON.errors.name[0] + '</span>');
                }
            });
        });
    </script>
</body>
</html>

关键注意点:

  • 必须引入jQuery,我们用它的AJAX方法简化异步请求的编写;
  • 一定要处理Laravel的CSRF保护,通过meta标签和ajaxSetup设置请求头,否则后端会直接拒绝请求;
  • 用submit事件阻止表单默认提交,改用AJAX异步提交,实现无刷新的实时验证效果。

内容的提问来源于stack exchange,提问作者RajB009

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:18