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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值