Laravel 7:点击提交按钮后修改URL路径的问题问询
解决Ajax提交后URL路径错误的问题
你遇到的核心问题是Ajax请求里的url用了相对路径,浏览器会自动把它拼接到当前页面的URL后面,导致出现不符合预期的路径。下面给你几个实用的解决办法:
方法1:直接使用绝对路径
把Ajax的url改成从域名根目录开始的绝对路径,这样浏览器就不会依赖当前页面路径进行拼接了:
$.ajax({ method:'POST', url:'/MyLaravel/public/change-user-details', // 加上根路径前缀 cache: false, processData:true, contentType: 'application/x-www-form-urlencoded', data:{ // 你的表单数据 }, // 其他逻辑代码 });
方法2:用Laravel的URL辅助函数(推荐)
如果担心硬编码路径在不同部署环境出问题,可以利用Laravel自带的url()辅助函数生成动态绝对URL,更灵活:
先在你的Blade视图里定义一个全局变量:
<script> const changeDetailsUrl = "{{ url('change-user-details') }}"; </script>
然后在Ajax请求里直接用这个变量:
$.ajax({ method:'POST', url: changeDetailsUrl, cache: false, processData:true, contentType: 'application/x-www-form-urlencoded', data:{ // 你的表单数据 }, // 其他逻辑代码 });
这个方法能自动适配项目的部署路径,不用手动修改硬编码的地址。
额外提醒:控制器方法名的坑
你路由里写的LoginController@change-user-details可能会触发PHP报错——因为PHP的方法名不允许包含中横线。需要把控制器里的方法改成合法的命名方式,比如驼峰命名:
// LoginController.php中的处理方法 public function changeUserDetails(Request $request) { // 编写修改用户信息的逻辑 }
然后对应调整路由:
Route::post('change-user-details','LoginController@changeUserDetails');
调整完成后,Ajax请求就会正确指向http://localhost/MyLaravel/public/change-user-details,不会再出现路径拼接错误的问题了。
内容的提问来源于stack exchange,提问作者Skumar
相关产品推荐
相关产品推荐

