Laravel 8中Ajax实现可搜索下拉选择框数据不加载问题求助
问题修复方案
错误点及对应修复方法
- 请求方法与路由不匹配
你的AJAX请求使用
POST方法,但路由定义的是GET类型,请求会直接触发405方法不允许错误
修复:修改路由代码为POST类型:
Route::post('/productlist',[AppController::class, 'productlist']);
- 控制器返回格式不符合要求
你的AJAX配置了
dataType:"json"要求返回JSON格式,但当前控制器返回的是视图页面,无法被JS解析
修复:修改控制器代码直接返回JSON数据:
public function productlist() { $data= DB::table('Products') ->orderBy('id', 'DESC') ->get(); return response()->json($data); }
- 缺少CSRF令牌Meta标签
AJAX代码需要读取
meta[name="csrf-token"]的内容作为请求凭证,你提供的Blade代码中没有定义这个标签,会导致请求被Laravel的CSRF中间件拦截,返回419状态码错误
修复:在Blade文件的<head>标签内添加以下代码:
<meta name="csrf-token" content="{{ csrf_token() }}">
- 缺少对应的下拉框DOM元素
你提供的Blade代码中没有定义ID为
category_item的select元素,JS无法找到对应节点渲染选项
修复:在form表单内添加下拉框代码:
<select id="category_item" class="form-control selectpicker" data-live-search="true"> <option value="">请选择产品</option> </select>
- 数据库字段名校验
确认你的
Products表中产品名称字段确实是Product_name(注意大小写),如果字段名是小写的product_name,需要把JS代码里的data[count].Product_name改成data[count].product_name
调试辅助
如果修改后仍有问题,可以按F12打开浏览器开发者工具,查看控制台报错和网络请求的返回内容,可快速定位剩余问题。
内容的提问来源于stack exchange,提问作者phplover
相关产品推荐
相关产品推荐

