2016-12-28 1 views
0

登録フォームにMixpanel Peopleのトラッキングを設定しようとしていますが、自分のフォームにMixpanelのdistinct_idを渡すことができません。Mixpanel Javascript - オブジェクトを返すdistinct_id変数

これはMixpanel(documentation)からユーザーのdistinct_idを取得するスクリプトです:

mixpanel.init("MY_TOKEN", { 
    loaded: function(mixpanel) { 
     distinct_id = mixpanel.get_distinct_id(); 
    } 
}); 

私は<input type="hidden" name="distinct_id" id="distinct_id" value="" />

$(document).ready(function(){ 
    $("#distinct_id").val(distinct_id); 
}); 

と私の登録フォームの隠し入力に渡ししようとすると、 Chrome Inspectorのソースコードの結果の行は、次のようになります。<input type="hidden" name="distinct_id" id="distinct_id" value="[object HTMLInputElement]">

ただし、 Chromeコンソールでconsole.log(distinct_id);を実行すると、IDが出力されます。

私はjavascriptのはかなりゴミであることを認めるよ、私はここで何かを明らかに不足していることができた...私はそうのようなJSON.stringify機能でそれを解析しようとしました:

$(document).ready(function(){ 
    distinct_id = JSON.stringify(distinct_id, null, 4); 
    $("#distinct_id").val(distinct_id); 
}); 

が、それだけで生産{}の形式で値として...

どのような候補がありますか?

+0

:あなたが唯一の負荷にmixpanelを必要とするようさらに

mixpanel.init("MY_TOKEN", { loaded: function(mixpanel) { distinct_id = mixpanel.get_distinct_id(); $(document).ready(function(){ $("#distinct_id").val(distinct_id); }); } }); 

、あなたは、完全に$(document).ready(function() {});をスキップして、ちょうどこの操作を行うことができます参照として

は、ここでの結果のコードは次のようになります。最初のコードブロックに見積もりがありません。 – trincot

+0

ありがとう、ありがとう。この質問のためにMixpanelトークンを削除したときにそれを削除していなければなりません – tristanojbacon

+1

'$(document) 'を動かす方がいいのであれば' ready'コールバックが 'pixpanel.init ... loaded'コールバックの前にトリガするかもしれません。 'init .... loaded'コールバック内の' ready'ブロック*内部にあります。 – trincot

答えて

0

共有した内容に基づいて、実際にはinit関数のスコープ内にあるときに変数 "distinct_id"をグローバル変数として扱います。トリンコットが言及しているように、$(document).ready()ブロックにあるものを動かすと問題が解決するかもしれませんが、distinct_idをグローバル変数として宣言することも有効です。

0

@trincotの提案によれば、私は$("#distinct_id").val(distinct_id);init ... loadedという関数に追加していました。

mixpanel.init("MY_TOKEN", { 
    loaded: function(mixpanel) { 
     distinct_id = mixpanel.get_distinct_id(); 
     $("#distinct_id").val(distinct_id); 
    } 
}); 
関連する問題