关闭AJAX弹窗后重定向到新页面的实现方法
关闭弹窗后重定向到指定页面实现方案
核心跳转用原生JS的页面跳转API即可:window.location.href = "目标页面地址",根据你需要的触发时机,对应修改现有代码即可,具体改法分两种常见场景:
- 场景1:仅接口返回操作成功(
resp[0].valid == "true")、成功提示弹窗关闭后才跳转,操作失败/请求异常时不跳转,保留原有关弹窗停留在当前页的逻辑
直接把跳转逻辑放到成功提示的关闭回调里即可,避免跳转太早导致用户看不到成功提示。如果你用的success_alert组件不支持传入关闭回调,加500毫秒延时等弹窗动画走完再跳转也可以,修改后的代码参考:
send_ajax_formdata("POST","{{ url('/url') }}", {}, fData, {}) .then((resp) => { if(resp[0].valid == "true") { // 组件支持回调的写法:第二个参数传关闭后执行的回调 success_alert(resp[0].message, () => { // 替换成你实际要跳转的目标页面地址,blade模板里直接用url()生成即可 window.location.href = "{{ url('/your-target-route') }}"; }); // 组件不支持回调就用下面的延时写法替换上面的回调写法 // success_alert(resp[0].message); // setTimeout(() => { // window.location.href = "{{ url('/your-target-route') }}"; // }, 500); }else { warning_alert(resp[0].message); elem.removeClass("disabled"); elem.html(text); return; } elem.removeClass("disabled"); elem.html(text); }) .catch((err) => { danger_alert(err.message); elem.removeClass("disabled"); elem.html(text); })
- 场景2:不管操作成功/失败/请求报错,只要弹窗关闭就统一跳转到指定页
把跳转逻辑抽成公共方法,在所有执行elem.removeClass("disabled")关弹窗的位置调用即可。另外别忘了给弹窗自带的关闭按钮(右上角叉号、取消按钮这类不走ajax回调的关闭入口)的点击事件也加上跳转逻辑,避免漏场景。
注意:不要在弹窗关闭逻辑(
removeClass、弹窗关闭动画执行)之前直接写跳转代码,否则页面会直接切走,用户看不到提示文案、也看不到弹窗关闭的过渡效果,体验很差。
内容的提问来源于stack exchange,提问作者Dear Janice
相关产品推荐
相关产品推荐

