Laravel表单提交后无法重定向到指定route页面该如何解决?
排查解决步骤
1. 先修复路由参数不匹配问题
你当前定义的cotizacion-enviada路由没有设置接收参数,但是跳转时传入了$id参数,虽然默认会作为查询参数拼接,但可能引发预期外的行为,可以二选一修改验证:
- 方案一:给路由新增参数接收
Route::get('cotizacion-enviada/{id}', function ($id) { return view('quotationshippingvalid', compact('id')); })->name('cotizacion-enviada');
- 方案二:跳转时移除多余参数
return redirect()->route('cotizacion-enviada');
2. 排查表单是否为AJAX提交
如果你的表单是通过AJAX(axios、jQuery ajax等)方式提交,后端返回的302重定向无法触发浏览器页面跳转,需要在前端提交成功的回调中手动控制跳转:
示例(jQuery提交场景):
$.post('你的表单提交接口地址', formData, function () { // 提交成功后手动跳转 window.location.href = '/cotizacion-enviada'; })
你可以打开浏览器开发者工具的「网络」面板,提交表单后查看请求头的X-Requested-With字段,如果值为XMLHttpRequest即可确认是AJAX提交场景。
3. 验证跳转逻辑是否正常执行
你可以在控制器store方法的跳转返回前加一行调试代码,确认代码逻辑是否走到了跳转步骤:
dd('跳转逻辑已触发'); return redirect()->route('cotizacion-enviada', [$id]);
如果提交表单后页面输出了上面的调试内容,说明跳转逻辑正常执行,反之需要排查前面的业务逻辑是否有提前终止请求的代码。
4. 清空路由缓存
如果项目开启了路由缓存,修改路由规则后需要清空缓存才会生效,执行以下命令即可:
php artisan route:clear
内容的提问来源于stack exchange,提问作者Lucas Cardemil Villegas
相关产品推荐
相关产品推荐

