2014-04-11 38 views
5

我正在尝试使用GA用户计时来跟踪我们网站中的ajax事件的持续时间。我有一个集中的ajaxCall函数,它封装了jQuery ajax调用方法。这看起来像是一个理想的地方,因为我们几乎所有的ajax调用都是通过这种方法进行调用的。试图使用Google Analytics(分析)用户计时并且没有记录结果

我遇到的问题是GA似乎没有注册计时命中。

下面是我用我的AjaxCall的方法的代码:

function ajaxCall(url, data, fnSuccess, dataType, fnFailure) 
{ 
    if (!fnFailure) 
    { 
     fnFailure = function(jqXhr) 
     { 
      var lastDitchHtml = window.getCriticalErrorDialog("An error occurred during the ajax call."); 
      window.showCeebox(lastDitchHtml, 120, 350); 
     }; 
    } 

    var a = $('<a>', { href : url })[0]; 

    var startTime = getTimestampMilliseconds(); 

    $.ajax({ 
     cache : false, 
     async : false, 
     url : url, 
     type : 'POST', 
     dataType : dataType, 
     data : data, 
     success : fnSuccess, 
     error : fnFailure 
    }); 

    var endTime = getTimestampMilliseconds(); 
    var duration = endTime - startTime; 

    window.ga('send', 'timing', 'AjaxCall', a.pathname, duration); 
} 

下面是getTimestampMilliseconds方法的代码:

function getTimestampMilliseconds() 
{ 
    if (window.performance) 
    { 
     return window.performance.now(); 
    } 
    else 
    { 
     return new Date().getTime(); 
    } 
} 

我曾尝试使用发送替代语法javascript对象的选项如下:

window.ga('send', { 
hitType : 'timing', 
timingCategory : 'AjaxCall', 
timingVar : a.pathname, 
timingValue : duration}); 

and

window.ga('send', { 
'hitType' : 'timing', 
'timingCategory' : 'AjaxCall', 
'timingVar' : a.pathname, 
'timingValue' : duration}); 

我已验证信标是通过Chrome Google Analytics调试器加载项和提琴手发送给GA的。 Fiddler显示,对GA的请求返回一个小图像和200 OK结果。

我已经等了整整24小时才能显示结果并且什么也没有。

我已经认识到,浏览量和事件跟踪很好,只是没有时间请求。

任何帮助将不胜感激。

+0

我没有看到您的活动有任何问题。您是否偶然从配置文件中过滤出您的IP? – Blexy

+0

我不这么认为。其他请求正常工作,包括网页浏览和实际跟踪器事件,只是不计时事件。 – BardMorgan

回答

5

我的一位同事进一步调查发现答案。

我写的getTimeStampMilliseconds函数返回一个小数部分(例如450.98761)的值,这显然是Google API不喜欢的。复杂的是,Google根本没有返回任何错误代码,导致我们认为一切正常。

更改代码以在定时调用中仅传递整数毫秒来解决问题。

0

在我意识到我的Google Analytics(分析)页面的日期范围前天结束之前,我几个小时都在同一个问题上挣扎。

enter image description here

将其更改为今天的日期后,显示的所有我最近的测试时间安排。我认为它默认设置显示最近的时间,并没有检查它。

相关问题