Ajax调用 打不开新窗口

Ajax调用后台,成功后打开新页面。

通常情况下没有什么问题,但许多用户可能会拦截广告。所以使用Ajax调用成功后可能打不开新窗口。

解决方法,利用用户事件同时Ajax采用同步方式。此情况下,浏览器认为是用户主动打开不会拦截。

示例代码:
var patrn = /^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$/;
var email = emailaddress.value;
if (!patrn.exec(email)) {
alert("请输入正确的邮箱地址,你的邮箱地址不符合规则");
emailaddress.focus();
return false;
}
var serviceUrl = '/Subscribe.ashx';
var source = 'vipsite';
var key = "key";
$.ajax({
type: "get",
url: serviceUrl,
async: false,
data: { source: source, key: key, email: email, w: Math.random() },
success: function (result, status) {
r = result;
},
error: function () {
//请求出错处理
}
});

//设置同步的原因在于open一个新窗口 不能再success里面写,可能会被浏览器拦截,不被认为是用户操作,而须在代码的后面写,而如果是异步的时候,可能ajax请求没有走完,就已经要走到这里
if (r == "state0") {
window.open("/newsletter.aspx?email=" + email);
}
else if (r == "state1") {
alert("此邮箱已订阅");
} else {
alert("订阅失败!");
}
return false;

原文地址:https://www.cnblogs.com/Amity/p/3157430.html