请教大家一下:
我想统计用户在每个页面的停留时间,然后,通过AJAX技术跨域提交给服务器处理;
目前我采用方法是通过js读取用户进入页面的时间,和用户离开页面的时间,并将得到的参数值通过getJSON方法传给服务器;具体代码如下:
js代码:
para1={
'isfrist':"y", //是否第一次进入网站
'fristTime': fristTime, //第一次进入网站的时间
'system':system, //浏览器端操作系统类型
'color':color,//颜色 32 bit
'ratio':ratio,//屏幕分辨率
'typ':typ,//浏览器的类型
'lan':lan,//浏览器的语言
'dist':dist,//客户端的时区
'entrance':entrance,//用户进入网站的页面地址
'source':source//用户来源,google或baidu搜索
}
参数的值都已经得到,当页面初次加载的时候,调用以下函数:
window.onload=recordPara;//用户初次进入页面时加载的函数
window.onunload=sendPara;//用户离开页面时的调用的函数
function recordPara(){
if(get_cookie("load")=="") { //判断用户是否是第一次进入网站,如果是,怎在第一次加载页面的时候,向服务器发送请求;
$.getJSON(userSite+'cartInfo.php?jsoncallback=?',para1,function(data){
alert(data);
if(data){
alert("first go in");
}
})
}
else {
enterTime=getDate();//进入页面时间
current=getUserInfo("current"); //获取用户当前浏览的页面
}
}
而当页面离开时,调用
function sendPara(){
leaveTime=getDate();//离开页面时间
if(get_cookie("load")==""){ //判断是否是第一次离开页面
enterTime=leaveTime;
document.cookie="load=yes";
}
var para2={
'isfrist':"n",//是否是第一次进入页面
'enterTime':enterTime,
'current':current,
'leaveTime':leaveTime
};
$.getJSON(userSite+'cartInfo.php?jsoncallback=?',para2,function(data){
alert("second");
if(data){
alert("发送成功!");
}
})
}
服务器端:
$i=$_GET['isfrist'];
if ( $i == 'y' ) {
$fristTime=$_GET['fristTime'];
$system=$_GET['system'];
$color=$_GET['color'];
$ratio=$_GET['ratio'];
$type=$_GET['typ'];
$lan=$_GET['lan'];
$dist=$_GET['dist'];
$entrance=$_GET['entrance'];
$source=$_GET['source'];
//插入数据库
echo json_encode($i);
}
if( $i == 'n') {
$enterTime=$_GET['enterTime'];
$current=$_GET['current'];
$leaveTime=$_GET['leaveTime'];
//插入数据库
echo json_encode('y');
}
而现在,getJSON回调函数没有返回值,但服务器端能接受参数,并且插入数据库;而经过测试在ie,firefox中运行正常,而在safari和google浏览器中,进入下一个页面,离开上一个页面(onunload)数据没有发送到服务器端,而当关闭浏览器时才发送到服务器。