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

ASP MVC 5中SweetAlert弹窗确认后跳转页面异常问题

解决SweetAlert弹窗后再跳转的问题

看起来你遇到的问题有两个核心原因:

  • 提交按钮触发了默认的表单提交行为,导致页面直接刷新跳转,Ajax请求还没完成就被中断了
  • 当前代码在Ajax成功后立刻执行页面跳转,没有等待用户点击弹窗的确定按钮

下面是修复后的完整代码,我会一步步解释改动点:

1. 修改提交按钮,阻止默认表单提交

把按钮的onclick改成返回函数的结果,这样能阻止默认的表单提交动作:

<input type="submit" value="Confirm" style="margin-left:-270px;" onclick="return SendEmail()">

2. 调整JavaScript代码,等待用户点击弹窗后再跳转

修改SendEmail函数,在SweetAlert的回调函数里执行页面跳转,确保用户看到弹窗并点击确定后才跳转:

var SendEmail = function () {
    // 阻止默认事件(保险起见,和按钮的return false配合)
    event.preventDefault();
    
    jQuery.ajax({
        type: "POST",
        url: "/Bestellung/SendMailToUser",
        success: function (data) {
            // 旧版SweetAlert的回调写法(匹配你当前用的swal()语法)
            swal("Good job!", "Your order has been confirmed with success :)", "success", function() {
                // 用户点击弹窗的确定按钮后,才执行跳转
                window.location = "/Home/Index";
            });
        },
        error: function() {
            // 建议加上错误处理,发送失败时给用户提示
            swal("Oops!", "Something went wrong with sending your order confirmation.", "error");
        }
    });
    
    // 阻止默认表单提交的最后一道保障
    return false;
}

关键改动说明:

  • event.preventDefault()和return false:双重保障,彻底阻止submit按钮的默认表单提交行为,避免页面提前刷新
  • 将window.location放在SweetAlert的回调函数里:只有当用户主动点击弹窗的"确定"按钮后,才会触发页面跳转,完美契合你想要的流程

测试一下这个改动,点击确认按钮后,应该会先显示成功弹窗,点击弹窗的确定后才会跳转到首页~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:06:20