今天写个很简单的功能只当是一个小结。
点击量的基本流程都是这样的:在点链接的时候,先转到你设定的一个统计地址,然后重定向到真实地址。
我是通过ajax来实现这个流程。以实现友情链接和广告公用这个功能。
先说说后台代码部分
首先是友情链接部分的,他是有后台代码生成HTML代码如下
_GoodLink1.Append("·<a href='" + dr["LJDZ"] + "' target='_blank' title='" + dr["LJMC"] + "' οnclick=\"UpdateTraffs('LINK_TAB','LJID'," + dr["LJID"] + ",'DJCS')\">").Append(dr["LJMC"]).Append("</a>");
然后是广告部分,广告部分是由代码生成动态js再由页面引用js显示广告,下面是关键代码;
sb.Append("' target='_blank' οnclick=\\");sb.Append("\"javascript:UpdateTraffs('AD_TAB','GGID'," + dv.Table.Rows[k]["GGID"] + ",'DJCS')\\");sb.Append("\">");
这个里面最重要的是\\这个变量符的使用,这样以保证在js中是以οnclick=\"javascript:UpdateTraffs'AD_TAB','GGID',1,'DJCS')\"的形式
中间数据参数的传递的关键就是js代码如下
function UpdateTraffs(tabName,mainkey,keyValue,column)//要验证的表名,更新的表的主键,主键值,更新字段
{
var http_request;
if (window.XMLHttpRequest)
{//对于Mozilla、Netscape、Safari等浏览器,创建XMLHttpRequest对象
http_request = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{// 对于Internet Explorer浏览器,创建XMLHttpRequest
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{}
}
}
http_request.open("POST","/Function/Traffic.aspx?_tabName="+tabName+"&&_mainkey="+mainkey+"&&_keyValue="+keyValue+"&&_column="+column+"",false);
http_request.send();
}
再就是另一个执行页面这里面的代码很简单就不写了。
最后附带一个存储过程如下
CREATE PROCEDURE PRO_Traffic_Update---更新点击量
@TabName varchar(30),
@MainKey nvarchar(20),
@KeyValue VARCHAR(20),
@Column varchar(4)
AS
declare @sqlStr varchar(100)
SET @sqlStr='UPDATE '+@TabName+' SET '+@Column+'='+@Column+'+1 where '+@MainKey+'='''+@KeyValue+''''
exec(@sqlStr)