web-dev-qa-db-ja.com

GoogleアナリティクスでAJAXから呼び出されたページを追跡するにはどうすればよいですか。

AJAX=を使用して自分のWebサイトのページを呼び出していますが、何らかの理由でGoogle Analyticsがページアクセスを登録していません。強制的に登録するために何かをする必要がありますAJAXトリガーされたページ?

私は最新のUniversal anayticsコードを次のように使用しています:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).Push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXXXXX-1', 'mywebsite.ext');
  ga('send', 'pageview');

</script>

次のように、上記のスニペットを含むページへのJQuery AJAX呼び出しを使用しています。

<script>
//<![CDATA[             
$(document).ready(function(){

        $.ajax({
                url : "http://www.mywebsite.ext",
                type: "GET",
                async: false,
                data : { fromajax : "y" },
                success: function(data, textStatus, jqXHR)
                {
                        // alert("success - Data: " + data + "\ntextStatus: " + textStatus);
                },
                error: function (jqXHR, textStatus, errorThrown)
                {
                        alert("error \ntextStatus: " + textStatus + "\nerrorThrown: " + errorThrown + "\njqXHR: " + jqXHR);
                }
        });

});
//]]>

データベースに書き込むログステートメントがいくつかあるため、ページが呼び出されていることは確かです。また、リアルタイムの概要を使用してテストしているため、Analyticsコードが機能していることも知っています。

要約すると、私は http://www.mywebsite.ext を呼び出すページがありますAJAXおよび宛先ページ( http:// www .mywebsite.ext )には、ページを追跡していないように見えるユニバーサルアナリティクスコードが含まれています。ブラウザから通常どおりにページにアクセスすると、ページは正常に追跡されます。

それ以来、私は仮想フォルダーで「ga」関数を呼び出すことができることをスレッドから発見しました。したがって、AJAXの呼び出しを廃止し、代わりに次のようにユニバーサルアナリティクスを変更しました。

<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).Push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXXXXX-1', 'mywebsite.ext');
ga('send', 'pageview', '/localfolder/page');
ga('send', 'pageview');

</script>

私が今持っている問題は、それがga( 'send'、 'pageview'、 '/ localfolder/page');を呼び出すことです。 ga( 'send'、 'pageview');ではありません。

しかし、イベント間に最小間隔があることを理解しています: Google Analyticsイベントトラッキング-イベント間の最小間隔

したがって、setTimeout(function(){}、2000);を追加しました。イベントと最後のイベントの間はまだ呼び出されません。私も9秒まで行った。

18
user2599927

Googleアナリティクスを読み込むための古い標準は非同期メソッドでした:

var _gaq=[["_setAccount","UA-#######-#"],["_trackPageview"]];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";
s.parentNode.insertBefore(g,s)}(document,"script"));

このビットは、最初のページの読み込みを追跡しますが、その後のAJAX=呼び出しは追跡しません。ページの読み込みを追跡したい場合はいつでも、次のスニペットを追加してください。

// "_trackEvent" is the pageview event, 
_gaq.Push(['_trackPageview', '/some-page']);

_trackPageviewが再び使用されますが、今回はロードされたAJAXアドレスのURLを提供します。上記の小さなJavaScriptスニペットを使用すると、ページ全体がリロードされた場合と同じようにページビューを追跡できます。MooToolsのHistoryプラグインでこのスニペットを使用することをお勧めします。

Ajaxと組み合わせると、コードは次のようになります。

jQuery(document).ajaxComplete(function(e, xhr, settings){
  var d = document.location.pathname + document.location.search + document.location.hash;
  _gaq.Push(['_trackPageview', d]);
});

Universal Analytics Codeを使用する場合は、仮想ページロードの構文が異なります。

これは、UAで仮想ページビューを追跡するための構文です。

ga(‘send’, ‘pageview’, ‘path to your virtual page’);

例:

<a href=”http://www.example.com/gu/dw/seo-beginners-guide.pdf” onClick=”ga(‘send’, ‘pageview’, ‘/virtual/guides/download/seo-beginners-guide.pdf’);”> Download SEO Beginners Guide</a> 

したがって、ユーザーが「SEO初心者ガイドをダウンロード」リンクをクリックすると、UAは「/virtual/guides/download/seo-beginners-guide.pdf」という仮想ページビューを生成します。

出典:
http://davidwalsh.name/ajax-analytics
https://stackoverflow.com/a/7762559/3582159
http://www.optimizesmart.com/event-tracking-guide-google-analytics-simplified-version/

21
GlabbichRulz

HTML

<a class="ajax-load" href="home.html" >Home</a>

Javascript

jQuery(document).ready(function($) {
    $(".ajax-load").click(function(event) {
        event.preventDefault();
        var href = $(this).attr("href");
        $.ajax({
            url: href,
            type: 'post',
            dataType: 'html',

        })
        .done(function(response) {
            $(".somediv").html(response);
            // now send page view
            ga('send','pageview','/virtual/....');
        })
        .fail(function() {
            // show error dialog
        })
    });
});
1
Ilyas karim

この回答は新規の方へGAスニペットのみ

投票された答えは私にとってはうまくいきませんでした、これは少し修正されたバージョンです この答え 私にとってうまくいく

if ("ga" in window) {
    tracker = ga.getAll()[0];
    if (tracker) {
        tracker.set("page", '/some-page');
        tracker.send("pageview");
    }
}
1
dav

Ajaxを受け取っている人はJavascriptを予期していないか処理していないため、問題が発生する可能性があります。

Googleはこのプロトコルをソリューションとして持っています:

POST/collect HTTP/1.1ホスト:www.google-analytics.com

payload_data

詳細はこちら:

https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#proxy-server-tracking

POSTまたはスクリプト言語を使用したGETメソッドを使用する必要があります。回答と実用的な解決策を思いついた場合は、私に知らせてください!私はこれを取得するためにできる限りのことをしています仕事に。

0
user3313824