2014-04-11 14 views
5

Staram się używać czasów użytkownika GA do śledzenia czasu trwania wydarzeń ajaxowych na naszej stronie. Mam scentralizowaną funkcję ajaxCall, która hermetyzuje metodę wywołania ajax jQuery. To wydawało się idealnym miejscem do ustawienia czasu połączeń, ponieważ prawie wszystkie nasze wywołania ajaxowe przechodzą przez tę metodę.Próba wykorzystania czasu Google Analytics i brak zapisywania wyników

Problem, który mam, polega na tym, że GA nie wydaje się rejestrować trafień w czasie.

Oto kod używam dla mojej metody 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); 
} 

Oto kod dla metody getTimestampMilliseconds:

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

Próbowałem alternatywną składnię dla wysyłania przy użyciu obiekt javascript dla następujących opcji:

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

i

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

Sprawdziłem, że sygnał nawigacyjny jest wysyłany do GA za pomocą dodatku Google Chrome Debugger i narzędzia Fiddler. Fiddler pokazuje, że żądanie do GA zwraca mały obraz i wynik 200 OK.

Czekałem pełne 24 godziny na pojawienie się wyników i nic.

Uwierzyłem, że odsłony i zdarzenia śledzą dobrze, po prostu nie są to wnioski dotyczące czasu.

Każda pomoc zostanie bardzo doceniona.

+0

Nie widzę żadnych problemów z Twoim wydarzeniem. Czy przypadkiem odfiltrowujesz swoje IP z profilu? – Blexy

+0

Nie wierzę w to. Inne żądania działają dobrze, w tym odsłony strony i rzeczywiste zdarzenia trackera, a nie tylko zdarzenia związane z synchronizacją. – BardMorgan

Odpowiedz

5

Dalsze dochodzenie jednego z moich kolegów znalazło odpowiedź.

Funkcja getTimeStampMilliseconds, którą napisałem, zwracała wartość z ułamkową częścią (np. 450.98761), której najwyraźniej interfejs API Google nie lubi. Powikłaniem tego był fakt, że Google nie zwrócił żadnego kodu błędu, co doprowadziło nas do wniosku, że wszystko było w porządku.

Zmiana kodu w celu przekazania tylko całkowitej liczby milisekund w wywołaniu taktowania rozwiązała problem.

0

Przez kilka godzin zmagałem się z tym samym problemem, zanim zdałem sobie sprawę, że mój zakres dat na stronie Google Analytics dobiegł końca przedwczoraj.

enter image description here

Po zmianie go do dnia dzisiejszego, zostały wyświetlone wszystkie me ostatnie czasy testów. Przyjąłem, że domyślnie pokazywane są ostatnie czasy i nie sprawdzałem.

Powiązane problemy