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
相关产品推荐
相关产品推荐

