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

Laravel中点击城市触发Ajax GET请求出现500错误原因排查

分析500内部服务器错误的原因

咱们一步步拆解你遇到的问题,核心是两个关键错误导致了这个服务器内部错误:

1. 路由参数的获取方式不对

你的路由明确定义了{slug}参数,但控制器方法里却试图通过$request->slug来获取它——这是错误的用法。路由中的参数需要直接作为方法参数接收,或者用$request->route('slug')来读取,否则$request->slug会返回null,直接导致数据库查询逻辑出错。

2. whereCity动态查询方法的用法完全错误

Laravel的动态where方法(比如whereCity)的设计逻辑是:直接传入字段对应的值,它会自动匹配对应的字段名。你现在的写法:

Conference::whereCity('city', DB::raw($request->slug))->get();

完全不符合规范:whereCity()只需要接收一个参数(即要匹配的城市值),而且这里根本不需要用DB::raw()——你只是做普通的字符串匹配,不是要执行原生SQL表达式。


修正后的控制器代码

把getConferencesOfCity方法改成下面这样就能解决问题:

public function getConferencesOfCity(Request $request, $slug) {
    // 直接使用路由参数$slug,或者用$request->route('slug')读取
    $conferences = Conference::whereCity($slug)->get();
    // 或者用更通用的where写法,效果完全一致:
    // $conferences = Conference::where('city', $slug)->get();
    
    return response()->json($conferences);
}

另外建议你开启Laravel的调试模式(在.env文件中设置APP_DEBUG=true),这样能看到具体的错误详情(比如SQL语法错误),会大大加快排查问题的速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:32:30