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

AJAX请求后返回Redirect页面未刷新且未显示消息的问题

问题根源

你当前用AJAX发起删除请求,但控制器返回的redirect()->with()是给浏览器的重定向指令——AJAX会直接接收这个HTTP响应,不会触发浏览器自动跳转,同时存在session里的提示消息也没法在当前页面显示,所以才出现页面没刷新、没提示的问题。

解决办法

办法1:不用AJAX,直接用链接/表单跳转

如果不需要异步处理,把按钮改成普通跳转链接:

  • Blade按钮修改:
<a href="{{ $base_url }}/offer/delete/{{ $offer->id }}" onclick="return confirm('确定要删除吗?')">删除</a>
  • 控制器代码保持不变:
return redirect('offer/delete')->with('message','This Service Is Unavailable');
  • 最后在offer/delete页面的Blade模板里加提示展示:
@if(session('message'))
    <div class="alert alert-warning">
        {{ session('message') }}
    </div>
@endif

办法2:保留AJAX,返回JSON响应在前端处理

如果必须用AJAX异步操作,修改控制器返回JSON,前端根据响应做提示和跳转:

  • 控制器代码修改:
return response()->json([
    'success' => false,
    'message' => 'This Service Is Unavailable',
    'redirect_url' => url('offer/delete')
]);
  • JavaScript代码更新:
function edit_offer(id, base_url) {
    $.ajax({
        method: "GET",
        url: base_url + '/offer/delete/' + id,
        success: function (result) {
            if (result.success) {
                Swal.fire({
                    type: 'success',
                    title: 'Deleted!',
                    text: 'Record has deleted successfully.',
                    showConfirmButton: false,
                    timer: 1000
                }).then(() => {
                    // 删除成功后刷新页面或跳转
                    location.reload();
                    // 或者跳转到指定页面:window.location.href = result.redirect_url;
                })
            } else {
                Swal.fire({
                    type: 'error',
                    title: '提示',
                    text: result.message
                }).then(() => {
                    // 跳转到目标页面
                    window.location.href = result.redirect_url;
                })
            }
        },
        error: function (err) {
            Swal.fire({
                type: 'error',
                title: 'Oops...',
                text: 'This record is connected with another data!'
            })
        }
    });
}
  • Blade按钮保持原写法即可:
onclick="edit_offer({{$offer->id}},'{{$base_url}}')"
核心提示
  • AJAX请求不会自动处理重定向,必须在JS里通过window.location.href手动触发跳转
  • ->with('message')是把消息存在session中,只有浏览器跳转后的页面才能读取,AJAX拿不到这个值,所以改用JSON返回消息更适配异步场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:04:55