zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    JAVA多线程与并发学习总结
    Java虚拟机类加载机制
    2013网易校园招聘笔试题
    人人网面试题
    2010人人网校园招聘笔试题
    2011人人网校园招聘笔试题
    2012人人网校园招聘笔试题
    2013人人网校园招聘笔试题
    海量数据查找唯一数据问题
    Hulu面试题
  • 原文地址:https://www.cnblogs.com/Amity/p/3157430.html
Copyright © 2011-2022 走看看