Laravel表单提交仅刷新页面,无法跳转指定路由问题求助
问题排查与解决步骤
1. 核对路由名称一致性
先确认routes/web.php中存在**名称为orders.store**的POST路由,比如:
Route::post('/orders', [OrderController::class, 'store'])->name('orders.store');
如果路由实际名称是order.store(单数形式),需同步修改表单里的路由调用,确保完全匹配。
2. 修正表单字段拼写错误
表单里的隐藏字段name="use_id"是拼写失误,正确字段名应为user_id,否则控制器无法接收正确的用户ID,可能触发验证或逻辑错误:
<input type="hidden" name="user_id" value="{{ auth()->user()->id }}">
3. 检查控制器store方法的跳转逻辑
确保OrderController的store方法末尾有明确的重定向代码,而非返回当前视图:
public function store(Request $request) { // 验证请求数据 $validated = $request->validate([ 'user_id' => 'required|exists:users,id', 'product_id' => 'required|exists:products,id', ]); // 执行订单创建逻辑 Order::create($validated); // 重定向到目标页面,比如购物车或订单列表 return redirect()->route('cart.index')->with('success', '商品已加入购物车'); }
若方法未返回redirect(),会导致页面刷新后停留在原页面。
4. 排查前端JS是否阻止提交
检查页面内的自定义JavaScript代码,是否存在阻止表单默认提交行为却未做后续处理的逻辑:
document.querySelector('form').addEventListener('submit', function(e) { e.preventDefault(); // 无后续处理时会导致仅刷新不跳转 });
如有此类代码,要么移除,要么在JS内手动发起请求并处理跳转逻辑。
5. 通过Laravel日志定位问题
若以上步骤均无问题,查看storage/logs/laravel.log文件,日志会记录请求处理中的错误(如验证失败、数据库异常等),根据报错信息定位具体问题。
内容的提问来源于stack exchange,提问作者Hossam
相关产品推荐
相关产品推荐

