日期:2014-05-16  浏览次数:20570 次

继——AJAX中弹出窗口连续弹出 .

对于前段时间提到过的“AJAX中弹出窗口连续弹出 ”的问题,提供了一种解决方案:将弹出窗口过程在前台js中实现,即可每次都弹出相同内容窗口。

对于这个解决方案,在部署到服务器时又遇到了问题,服务器为ie6,也许不兼容弹出窗口的js,弹出窗口的内容无法加载。

因此开始寻求第二个解决方案:

从本质原理出发,对于同一内容窗口第二次没有弹出的原因是,后台调用弹出窗口的代码完全相同(相同方法,方法参数也相同)

如果每次后台弹出窗口代码有变化就会引起ajax刷新,因而每次都会执行后台代码

从这一解决方案出发:

将后台弹出窗口方法改为:

protected void lnkTab_Click(object sender, EventArgs e)
    {
        Session["childQX"] = 1;
        if (id1 == "0")
        {
            ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab2('" + hiddPropId.Value + "')", true);
            id1 = "1";
        }
        else
        {
            ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab3('" + hiddPropId.Value + "')", true);
            id1 = "0";
        }
        //AjaxPanel2.
        //Refush();
    }

通过切换调用不同js来弹出窗口,不同js都是相同的内容,只是赋予了不同的名字。

如此每次后台调用代码都会刷新,便可以连续弹出窗口。

此原理简化一下,用当前时间作为参数的方案,更简洁:

protected void lnkTab_Click(object sender, EventArgs e)
    {
        Session["childQX"] = 1;

        ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab2('" + hiddPropId.Value + ",'DateTime.Now')", true);
         id1 = "1";
    }

每次调用,参数值均不同,因而导致每次都会刷新,而执行后台代码。