静态页面使用ajax刷新页面访问量,通过easyui实现

摘要:
网站应实现刷新流量的功能。它应该是一个简单的小功能,但如果页面被静态转换为html页面,则无法实现以前的动态刷新流量的方法。如何增加和获取静态页面中的流量数据?我提出了一个解决方案——在不通过Ajax异步请求刷新页面的情况下,从数据库动态获取和更新访问数据。当然,如果还有其他好的解决方案,请分享。让我们看看我的解决方案的代码实现。两点:1.编写程序前介绍e

网站要实现一个访问量刷新的功能。本来应该是很容易的一个小小功能,但是如果页面被静态化为html页面时以往的动态刷新访问量的方法就无法实现。如何才能实现在静态页面中增加并获取访问量数据呢?想到了一种解决方案——通过ajax异步请求不刷新页面,实现动态的从数据库获取并更新访问量数据。当然,如果有其他好的解决方案也请大家贴出来分享。下面来看看我的解决方案的代码实现。

两点说明

1.在开始编写程序之前先引入easyui的JQuery库——jquery.easyuiform.js

2.由于在测试时出现了页面刷新时存放访问量的<sapn></span>标签数据丢失问题,为了解决这个问题自己琢磨出一个解决方案是利用cookie来存放访问量数据,然后从cookie中获取数据再赋值到<span></span>中,同时也利用cookie解决了一个限时刷新访问量的问题即在一定时间段内刷新页面不会反复刷新访问量,当然这不是精确的访问量统计,只是能够减轻频繁读取数据给服务器带来的压力。通过JQuery操作cookie需要引入一个插件——jquery.cookie.js。

解决方案原理

页面通过ajax发送请求到handle.ashx一般处理程序,处理程序判断请求是否由页面发出并获取参数,然后初始化全局控制变量和起到控制和标识作用的变量;传递参数和SQL语句给后台方法更新数据库中访问量数据。获取访问量数据原理同理,只是SQL语句和调用的取数据的后台方法不同罢了。

静态页面ajax代码

$(document).ready(function(){      //页面加载完毕运行JQuery代码
            var uid = $("#UId").val();
            if(!jQuery.cookie(uid)){    //如果cookie不存在,则创建cookie,并增加访问量。
                UpdatePageView();
                PageViewCookie(uid);
                $("#PageView").html(jQuery.cookie("ViewCount"));
            }
            else{        //当在限制时间段内时,从cookie获取存放的访问量数据
                $("#PageView").html(jQuery.cookie("ViewCount"));
            }

        });

        function UpdatePageView(){        //更新访问量
            var uid = $("#UId").val();
            
            $("#PageViewForm").form(
                "submit",
                {
                    url: '/comments/HandleComments.ashx?action=update',
                    success: function (data) {
                        jsondata = eval('(' + data + ')');
                        if (jsondata.state == "success")
                        {
                            GetPageView();
                        }
                        else {
                            alert(jsondata.message);
                        }
                    }
                });
        }

        function GetPageView()
        {        //获取访问量
            var uid = $("#UId").val();
            $("#PageViewForm").form(
                "submit",
                {
                    url: '/comments/HandleComments.ashx?action=getartclick',
                    success: function (data) {
                        jsondata = eval('(' + data + ')');
                        if (jsondata.state == "success")
                        {
                            $("#PageView").html(jsondata.message);
                            var cookieName="ViewCount";    
                            
                            jQuery.cookie(cookieName,jsondata.message);        //创建存储访问量的cookie
                        }
                        else
                            {
                            alert(jsondata.message);
                        }
                    }
                });
        }

        function PageViewCookie(cookieName){        //生成存放访问时间的cookie
            var date = new Date();
            date.setTime(date.getTime()+(1*60*1000));
            jQuery.cookie(
                cookieName,
                date.getTime(),
                {expires:date}
            );
        }

静态页面中与ajax相关的html标签代码

<form name="PageViewForm"  method="post">  //设置了一个元素为隐藏元素的表单目的是传送获取到用户id
    <input type="hidden" name="UId" value="108"/>
</form>

<li>
    访问量:<span id="PageView"></span>
</li>

处理程序代码

            context.Response.ContentType = "text/plain";
            context.Response.Cache.SetNoStore();
            context.Response.Clear();
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            JsonText.CommonStruct commonStruct = new JsonText.CommonStruct();
            commonStruct.state = "error";
            commonStruct.message = "操作失败";
            string requestAction = Utils.Tostring(context.Request["action"]).ToLower();

//更新访问量
            if (requestAction == "update")
            {
                int uid = Utils.Toint(context.Request.Form["UId"],0);
                string sql = "UVisitedCount=UVisitedCount+1";
                ExecResultData result ;

                    try
                    {
                        result = TbUserArt.UpdateTbUserstr(uid, sql);     //增加点击量
                        if (result.State == true)
                        {
                            commonStruct.state = "success";
                            commonStruct.message = "更新成功";
                        }
                        else if (result.State == false)
                        {
                            commonStruct.state = "error";
                            commonStruct.message = "更新失败";
                        }
                    }
                    catch (Exception ex)
                    {
                        commonStruct.state = "error";
                        commonStruct.message = ex.Message;

                    }
                    context.Response.Write(serializer.Serialize(commonStruct));
                    context.Response.End();
            }
            //更新访问量

            //获取访问量
            if (requestAction == "getartclick")
            {
                int uid = Utils.Toint(context.Request.Form["UId"], 0);
                TbUserArtData result;

                try
                {
                    result = TbUserArt.GetTbUserArtDataByUID(uid);     //获取点击量
                    if (result.UVisitedCount.ToString() != string.Empty)
                    {
                        commonStruct.state = "success";
                        commonStruct.message = result.UVisitedCount.ToString();
                    }
                    else
                    {
                        commonStruct.state = "error";
                        commonStruct.message = "获取失败";
                    }
                }
                catch (Exception ex)
                {
                    commonStruct.state = "error";
                    commonStruct.message = ex.Message;
                }

                context.Response.Write(serializer.Serialize(commonStruct));
                context.Response.End();
            }
            //获取访问量

免责声明:文章转载自《静态页面使用ajax刷新页面访问量,通过easyui实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ASP.NET Core扩展库之实体映射求教如何在win7 X64系统上安装.net 3.5 sp1下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HostOnly Cookie和HttpOnly Cookie

怎么使用Cookie? 通常我们有两种方式给浏览器设置或获取Cookie,分别是HTTP Response Headers中的Set-Cookie Header和HTTP Request Headers中的Cookie Header,以及通过JavaScript对document.cookie进行赋值或取值。 rfc6265第5.2节定义的Set-Cook...

一文带你了解 HTTP 黑科技

这是 HTTP 系列的第三篇文章,此篇文章为 HTTP 的进阶文章。 在前面两篇文章中我们讲述了 HTTP 的入门,HTTP 所有常用标头的概述,这篇文章我们来聊一下 HTTP 的一些 黑科技。 HTTP 内容协商 什么是内容协商 在 HTTP 中,内容协商是一种用于在同一 URL 上提供资源的不同表示形式的机制。内容协商机制是指客户端和服务器端就响应的资...

window.opener方法的使用 js跨域

最近公司网站登陆加入了第三方登陆。可以用QQ直接登陆到我们网站,在login页面A中点QQ登陆时,调用了一个window.open文件打开一个login页窗口B,登陆后callback地址回调成功后,需要关闭当前window.open打开的login小窗口B,再将打开这个小窗口的原窗口页(A)刷新显示正确状态. 这时就用到了这个方法: window.ope...

会话管理(Cookie/Session技术)

什么是会话:用户打开浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程就称为一个会话; 会话过程需要解决的问题:每个用户在使用浏览器与服务器进行会话的过程中,都可能会产生一些数据,这些输入如何来进行保存?比如用户在购物网站浏览的商品记录,用户添加购物车的记录等等这些信息如何进行存储?在程序中会话跟踪是一件非常重要的事情,一个用户的...

vue之vue-cookies

npm链接:https://www.npmjs.com/package/vue-cookies 安装: npm install vue-cookies --save 使用:main.js引入 import Vue from 'Vue' import VueCookies from 'vue-cookies' Vue.use(VueCookies) Ap...

session 详细解析(转)

  转自  https://www.cnblogs.com/blueskycc/p/5524709.html?tdsourcetag=s_pcqq_aiomsg http协议是WEB服务器与客户端(浏览器)相互通信的协议,它是一种无状态协议。所谓无状态,指的是不会维护http请求数据,http请求是独立的,非持久的。而越来越复杂的WEB应用,需要保存一些用...