通过ajax记录网站UV、PV数

简介: 1、通过jquery记录网站UV、PV数据 util.track = { log: function () { var referrer = util.

1、通过jquery记录网站UV、PV数据

util.track = {
    log: function () {
        var referrer = util.browser.getReferrer(),
        host = window.location.host,
        pathname = window.location.pathname,
        url = window.location.href,
        title = document.title,
        type = 0,
        itemId = null;


        var detailRegex = /\/item\/(\d+)/;
        if (detailRegex.test(pathname)) {
            var result = detailRegex.exec(pathname);
            itemId = result[1];
            type = 1;

            $(".js_spec a").click(function () {
                setTimeout(function () {
                    var skuId = $("#js_skuId").val();
                    if (skuId != itemId) {
                        itemId = skuId;

                        r();
                    }
                }, 100);
            });
        }

        var r = function () {
            //alert("visit url:" + url + " title:" + title + " type:" + type);
            util.request.get("/ActionHandler.ashx", {
                referrer: url,
                url: url,
                title: title,
                type: type,
                itemId: itemId,
                visit: "visit"
            });
        };

        r();
    }
};

$(function () {
    //等待500毫秒后执行
    setTimeout(function () {
        util.track.log();
    }, 500);
})


2、后台Handler.aspx处理页面

<%@ WebHandler Language="C#" Class="ActionHandler" %>

using System;
using System.Web;

public class ActionHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
        if (context.Request["visit"] != null)
        {

            string url = context.Request["url"].ToString();
            string title = context.Request["title"].ToString();
            string referrer = context.Request["referrer"].ToString();
            string type = context.Request["type"].ToString();
            string itemId = context.Request["itemId"].ToString();
            CreateUserTracksLog(url, title, referrer, type.ToInt(0), itemId.ToInt(0));
        }
    }

    private void CreateUserTracksLog(string url, string title, string referrer, int? type, int? itemId)
    {
        ECS.Model.A_UserTracksLog log = new ECS.Model.A_UserTracksLog();
        if (HttpContext.Current.Request.Cookies == null)
        {
            return;
        }

        //if (context.Session[User_TRACK_LASTTIME] != null)
        //{
        //    var trackTime = context.Session[User_TRACK_LASTTIME].ToString().ToDateTime();
        //    if ((DateTime.Now - trackTime).Seconds < 30)
        //        return;
        //}

        //context.Session[User_TRACK_LASTTIME] = DateTime.Now;

        log.VisitToken = this.VisitToken;
        log.UserId = Utils.GetSessionUserID();
        log.IsLogin = Utils.GetSessionUserID() > 0 ? true : false;
        log.PageUrl = referrer;
        log.IP = HttpContext.Current.Request.UserHostAddress.ToString();
        log.CreateTime = DateTime.Now;

        new ECS.BLL.A_UserTracksLog().Add(log);
    }

    //访问用户令牌
    private const string UserTrackVisittoken = "visitToken";
    //访问用户令牌
    public string VisitToken
    {
        get
        {
            if (HttpContext.Current.Request.Cookies[UserTrackVisittoken] == null)
                CreateTrackCookie();

            return HttpContext.Current.Request.Cookies[UserTrackVisittoken].Value;
        }
    }

    private static void CreateTrackCookie()
    {
        HttpCookie trackCookie = new HttpCookie(UserTrackVisittoken);
        trackCookie.Value = Guid.NewGuid().ToString();
        trackCookie.Expires = DateTime.Now.AddDays(1);
        HttpContext.Current.Response.AppendCookie(trackCookie);
        HttpContext.Current.Response.Cookies.Add(trackCookie);
    }


    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}


目录
相关文章
|
前端开发 安全 JavaScript
使用Servlet+AJAX+AWT实现网站登录时的图片验证码功能
使用Servlet+AJAX+AWT实现网站登录时的图片验证码功能
213 0
使用Servlet+AJAX+AWT实现网站登录时的图片验证码功能
|
存储 前端开发 JavaScript
基于Flask开发网站 -- 前端Ajax异步上传文件到后台
从网页界面(前端)上传文件到服务器(后端)
475 0
基于Flask开发网站 -- 前端Ajax异步上传文件到后台
|
Web App开发 安全 前端开发
Ajax网站安全,谁来保证
保证Ajax应用程序的安全是任何开发或者管理Web服务的人员的一个新的挑战。大多数Ajax应用程序的核心是JavaScript的XMLHttpRequest对象,能够让Web页独立地连接到用户的Web服务器和提取跨域的内容。
826 0
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
95 0
|
8月前
|
JSON 前端开发 Java
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
189 0
|
8月前
|
敏捷开发 JavaScript 前端开发
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
|
8月前
|
前端开发 JavaScript
Jquery ajax捕获错误信息
Jquery ajax捕获错误信息
68 0
|
8月前
|
JSON 缓存 前端开发
Jquery中AJAX的应用
Jquery中AJAX的应用
87 0