2017-03-03 3 views
0

Google Analytics Measurement Protocolを使用する予定です。私は現在、クライアントID(cid)をURLパラメータとしてAjaxリクエストに含めることでキャプチャする予定です。Google AnalyticsトラッカークライアントID(cid)を使用

私はこのようなクライアントID値を公開することができ、私を見つけた:

var ga_cid; 
ga(function(tracker) { 
    ga_cid = tracker.get('clientId'); 
}); 

私はそれがグローバルな名前空間を汚染だとして、このルートが悪い形であることを心配。しかし、私はより洗練された(ベストプラクティス)ソリューションを見つけられませんでした。

"正しい"方法は何ですか?私はこれを熟考していますか?

答えて

0

AJAX呼び出しを行う際に渡す必要があるグローバルJavaScript変数の代わりに、Cookieを作成してPHPから参照することになりました。 PHPで次に

// put the Google Analytics Client ID into a cookie, so that it will be available to PHP 
ga(function(tracker) { 
    var date = new Date(); 
    date.setTime(date.getTime() + (30 * 24 * 60 * 60 * 1000)); 
    document.cookie = 'ga_cid=' + tracker.get('clientId') + '; expires=' + date.toUTCString() + '; path=/'; 
}); 

$ga_cid = filter_input(INPUT_COOKIE, 'ga_cid'); 
0

はい、これが正しいかもしれません。代わりにofficial documentationが推奨するように、クッキーからクライアントIDを取得しない方が良いでしょう。

ga(function(tracker) { 
    var clientId = tracker.get('clientId'); 
}); 

このページでは、ページの設定方法に基づいて検索する方法がいくつか追加されています。

+0

あなたが提供したコードは、そのドキュメントからのものです。それはクライアントIDを利用できるようにしないので、私のポストです。 – Sonny

+0

いいえ実際には2つのコードの間に大きな違いがあります。関数の外側にvarを宣言すると、それをグローバルスコープに増やしています。関数内で変数を宣言する限り、スコープをローカルとして保持できます。 http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript – pal4life

+0

あなたは私を誤解しています。あなたが与えた例では、値のスコープがローカルであることがわかります。これは公式文書の例です。ローカルなので、私が議論したように、Ajaxコールを作成するときのように、私のJavaScriptのどこか別のところに値にアクセスすることはできません。それが、私が修正版を提示した理由です。それを達成する方法であるか、より良い経路があるのか​​という疑問があります。 – Sonny

関連する問題