zoukankan      html  css  js  c++  java
  • ajax 无刷新 实现页面右下角弹出消息提示框

    程序类似OA办公系统,用的是FineUI这样的ext控件,很简单,页面布局也很便捷,用起来方便,重点是不用美工哦,而且提供一套完整的实例。

    因为是办公系统吧,在我们使用中需要完成一系列的流程,其中有一模块是请假的申请以及审批的部分,需要实现某部门的领导只要开着这个系统,有属下申请请假就要能及时看到,并且审批。

    如图中的右下角的消息通知框,这是刚刚登陆系统时进行的查询,但是在登陆之后要想要这种消息框时时的弹出需要完成的工作时,用到ajax就可以了实现了

    首先,登陆的主页面的前台写个ajax

    <script type="text/javascript">
            realtimewarm();
            var interval = window.setInterval(realtimewarm, 120000);
    
            function realtimewarm() {
                $.ajax({
                    //要用post方式   
                    type: "Post",
                    //方法所在页面和方法名   
                    url: "BaseData/ProcessMainType/AuditMain/Handler.ashx", //请求url                
                    cache: false,  //无缓存                 
                    timeout: 1000 * 130,  //AJAX请求超时时间为60秒                  
                    data: { time: 120 },
                    success: function (data, textStatus) {
                        //返回的数据用data.d获取内容   
                        if (data != null && data != "") {
                            showmsg('消息通知', data); //setTimeout(function () { }, 5000)
                        }
                        //setInterval(realtimewarm, 10000);
                        //realtimewarm();
                    },
                    error: function (err) {
                        //setInterval(realtimewarm, 10000);
                    }
                });
            }
    </script>

    不断的向Handler.ashx 页面请求数据,注意:var interval = window.setInterval(realtimewarm, 120000); 这句哦,
    在Handler.ashx页面中的代码(这里说一句,如果要让进程在使用中做过多时间的睡眠是不理想的,System.Threading.Thread.Sleep(1000)像是这个时间还比较短,这种方式也是在这个Handler页面隔段时间查询数据库吗,也是有一定的性能问题的,所以不可让进程有过多的时间停留,因为在休眠也是在访问服务器,只是服务器没有给出回应,就像你电话给别人,别人没有说话,但是话费还是要一样的付,如果停留时间很长,所有的用户都在反复查询,那么服务器的内存马上就会受不了的)

     public void ProcessRequest(HttpContext context)
        {
            int SendTime = 0;  //最多等待时间              
            if (context.Request.Form["time"] != null && context.Request.Form["time"].ToString() != "")
            {
                SendTime = int.Parse(context.Request.Form["time"].ToString());//接收传来的的后台要保持时间             
            }
            int i = 0;//计算超时时间(秒)              
            while (true)
            {
                System.Threading.Thread.Sleep(1000);//停留一千毫秒(1秒)                  
                i++;
                if (i < SendTime)
                {
                    string export = GetStartupScript();//具体的方法,用来实现所需的操作
                    if (!string.IsNullOrEmpty(export))
                    {
                        context.Response.Write(export);
                        break;
                    }
                }
                else
                {
                    context.Response.Write(null);
                    break;
                }
            }
        }
     public string GetStartupScript()
        {
          StringBuilder strshows = new StringBuilder();
          strshows.Append("<ul style="list-style-type:disc ;">");
         string strShowTipsHRQJ = ShowTipsHRQJ();//请假审批的提醒
            if (!string.IsNullOrEmpty(strShowTipsHRQJ))
            {
                strmores.Append(strShowTipsHRQJ);
             }
        }
      //这里写各种审批判断(请假)
        private static string ShowTipsHRQJ()
        {
            string returns = string.Empty;
            PublicCookie publiccookie = new PublicCookie();
            string groupid = publiccookie.GetCurrentPublicWay().Groupid;//当前登陆者的用户组
            Tips tips = new Tips();
            DataTable tmptips = tips.GetAuditMainHRQJ(groupid);
            if (tmptips.Rows.Count != 0)
            {
                int count = tmptips.Rows.Count;
                System.Text.StringBuilder strSupplyname = new System.Text.StringBuilder();
                strSupplyname.Append("您有").Append(count).Append("条请假申请需要审批!");
                returns = "<li><a href="#" onclick="openNew('请假审批','./BaseData/ProcessMainType/AuditMain/AuditMainAlone.aspx');return false;">" + strSupplyname.ToString() + "</a></li>";
            }
            return returns;
        }

    export中就是所拼接好的显示内容,然后放在js中,在管理系统的最前面的页面中显示出来就可以了,下面是用来显示右下角弹出窗体的js

    function showmsg(title, content) {//第一个参数是显示的标题,第二个是显示的内容
        var jiema = decodeURIComponent(content);
        for (var i = 0, j; i < jiema.length; i++) {
            j = jiema.charAt(i);
            if (j == '+')
            jiema=jiema.replace("+", " ");
        }
        var tihuan = jiema;
        //alert(tihuan);
        var tipw = new MyLib.TipsWindow({
            title: title,
            autoHide: 60, //60秒自动关闭  
            html: tihuan
        });
        tipw.show();
  • 相关阅读:
    Go语言TCP/UDP Socket编程
    Go目录
    Go语言获取项目当前路径
    Mysql写入记录出现 Incorrect string value: 'xB4xE7xB1xCAxBCxC7‘错误?(写入中文)
    Erlang的Web库和框架
    erlang 资源
    Erlang基础2
    Erlang语言基础总结
    angular修改端口号port
    npm ERR! Cannot read property 'resolve' of undefined
  • 原文地址:https://www.cnblogs.com/wningning/p/3252291.html
Copyright © 2011-2022 走看看