当前位置: 代码迷 >> JavaScript >> JQuery getJSON 跨域 统计用户操作 有关问题
  详细解决方案

JQuery getJSON 跨域 统计用户操作 有关问题

热度:592   发布时间:2012-11-23 22:54:33.0
JQuery getJSON 跨域 统计用户操作 问题
请教大家一下:

   我想统计用户在每个页面的停留时间,然后,通过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)数据没有发送到服务器端,而当关闭浏览器时才发送到服务器。

  相关解决方案