2014-04-11 7 views
5

Sto tentando di utilizzare gli orari utente di GA per tenere traccia della durata degli eventi Ajax sul nostro sito web. Ho una funzione centralizzata ajaxCall che incapsula il metodo call jQuery ajax. Questo sembrava un posto ideale per mettere il tempo per le chiamate poiché quasi tutte le nostre chiamate ajax passano attraverso questo metodo.Tentativo di utilizzare gli orari degli utenti di Google Analytics e di non ottenere risultati registrati

Il problema che sto avendo è che GA non sembra registrare i colpi di temporizzazione.

Ecco il codice che sto usando per il mio metodo 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); 
} 

ecco il codice per il metodo getTimestampMilliseconds:

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

Ho provato la sintassi alternativa per l'invio utilizzando un oggetto JavaScript per le opzioni come segue:

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

e

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

Ho verificato che il beacon viene inviato a GA tramite il componente aggiuntivo Debugger Google Chrome e Fiddler. Fiddler mostra che la richiesta di GA restituisce una piccola immagine e un risultato di 200 OK.

Ho aspettato ben 24 ore perché i risultati si presentassero e nulla.

Ho verificato che le pagine visualizzate e gli eventi seguano correttamente le richieste.

Qualsiasi aiuto sarebbe molto apprezzato.

+0

Non vedo alcun problema con il tuo evento. Stai per caso filtrando il tuo IP dal profilo? – Blexy

+0

Non ci credo. Altre richieste funzionano bene, comprese le visualizzazioni di pagina e gli eventi effettivi del tracker, ma non gli eventi di cronometraggio. – BardMorgan

risposta

5

Ulteriori indagini di uno dei miei colleghi hanno trovato la risposta.

La funzione getTimeStampMilliseconds che ho scritto stava restituendo un valore con una parte frazionaria (ad esempio, 450.98761), che apparentemente l'API di Google non gradisce. A complicare questo è stato il fatto che Google non ha restituito alcun tipo di codice di errore, portandoci a pensare che tutto andasse bene.

La modifica del codice per passare solo l'intero numero di millisecondi nella chiamata di temporizzazione ha risolto il problema.

0

Ho lottato con lo stesso problema per alcune ore prima che mi rendessi conto che il mio intervallo di date nella pagina di Google Analytics si stava concludendo l'altro ieri.

enter image description here

Dopo la modifica alla data odierna, sono stati esposti tutti mi ultimi tempi di prova. Supponevo che fosse impostato per mostrare i tempi recenti per impostazione predefinita e non l'ho verificato.