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

使用Laravel结合Ajax实现搜索栏的技术实现及代码咨询

修复Laravel + Ajax搜索栏的常见问题

我帮你梳理并修正代码里的问题,顺便补充完整实现逻辑:

首先看你现有代码里的几个明显问题:

  • 声明了XMLHttpRequest对象但完全没用到,属于冗余代码可以删掉
  • succes...是拼写错误,正确的回调函数名是success
  • 缺少success回调的具体处理逻辑,没法把后端返回的结果渲染到页面
  • 路由URL里的sutdent是拼写错误,应该是student

修正后的完整Ajax代码

function getSearch(){ 
    // 获取搜索表单的输入值
    var sr_s_id= $('#sr_s_id').val(); 
    var sr_name= $('#sr_name').val(); 
    var sr_department= $('#sr_department').val(); 
    var sr_semester= $('#sr_semester').val(); 

    // 配置Laravel必填的CSRF令牌
    $.ajaxSetup({ 
        headers: { 
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
        } 
    }); 

    // 发起Ajax POST请求
    $.ajax({ 
        type :"POST", 
        url :"{{url('/management/student')}}", // 修正拼写错误:sutdent → student
        dataType:"json", 
        data :{ 
            s_id: sr_s_id,
            name: sr_name,
            department: sr_department,
            semester: sr_semester 
        }, 
        // 请求成功后的回调:处理搜索结果
        success: function(response) {
            // 假设页面上有个id为search-results的容器用来展示结果
            const resultsContainer = $('#search-results');
            resultsContainer.empty();

            if(response.length > 0){
                // 循环渲染每个学生信息
                $.each(response, function(index, student){
                    resultsContainer.append(`
                        <div class="student-card">
                            <p><strong>学号:</strong>${student.s_id}</p>
                            <p><strong>姓名:</strong>${student.name}</p>
                            <p><strong>院系:</strong>${student.department}</p>
                            <p><strong>学期:</strong>${student.semester}</p>
                        </div>
                    `);
                });
            } else {
                resultsContainer.html('<p class="no-result">没有找到匹配的学生信息</p>');
            }
        },
        // 请求失败时的错误处理
        error: function(xhr, status, error) {
            console.error('搜索请求出错:', error);
            alert('搜索失败,请检查网络或稍后重试');
        }
    });
}

配套的后端关键配置

  1. 路由设置(routes/web.php)
Route::post('/management/student', [StudentController::class, 'search'])->name('student.search');
  1. 控制器处理逻辑(app/Http/Controllers/StudentController.php)
public function search(Request $request)
{
    // 构建动态查询,只在有对应参数时添加条件
    $students = Student::query()
        ->when($request->s_id, function($query, $sId){
            $query->where('s_id', 'like', "%{$sId}%");
        })
        ->when($request->name, function($query, $name){
            $query->where('name', 'like', "%{$name}%");
        })
        ->when($request->department, function($query, $dept){
            $query->where('department', $dept);
        })
        ->when($request->semester, function($query, $semester){
            $query->where('semester', $semester);
        })
        ->get();

    // 返回JSON格式的查询结果
    return response()->json($students);
}
  1. 视图CSRF令牌
    确保你的页面头部已经包含Laravel自动生成的CSRF meta标签:
<meta name="csrf-token" content="{{ csrf_token() }}">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:59:21