2

Mixpanel track_forms をデバッグした経験のある人はいますか?

まず、Firebug Chrome コンソール (Mixpanel 構成でデバッグが有効になっている場合) には、どの track_forms イベントに対しても空のプロパティ オブジェクトが表示されます。他のすべての Mixpanel イベントには、リファラー、ブラウザー データなどを含む、入力されたプロパティ オブジェクトがあります。コンソールのタイミングの問題であり、データが実際にログに記録されているのか、それとも実際にこれらのイベントからデータが欠落しているのかは不明です。

次に、mixpanel にログを記録しようとしているイベントである jquery 送信フォーム (チェックボックスのクリック時に送信) があります。track と track_forms のどちらを使用しても、イベントは記録されないようです。フォームの送信を遅らせるブレークポイントを追加すると、イベントがログに記録されているように見えます。したがって、競合状態のように見え、Mixpanel タイマーが機能していません。

/* doesn't work */
var d={};
$('.ch').bind('change',function(){  /*checkbox click submits form*/
    d['checked']=$(this).is(':checked'); 
    d['value']=$(this).val();
    mixpanel.track("my event",d);
    $('#myform').submit();
});

/* also doesn't work */
mixpanel.track_forms("#myform",'my event',d);

誰もこれを以前に解決しましたか?これは、クライアント側のフォーム送信の非常に基本的な使用例です。

4

2 に答える 2

7

mixpanel のドキュメントではすぐにはわかりませんが、ページの読み込み時に mixpanel.track_forms() を実行する必要があります。mixpanel API が DOM 要素を検査して「submit」タイプの子を探し、フォーム送信をインターセプトするために「click」リスナーをフックして、実際にフォームを送信する前に mixpanel 追跡を試行できるように、舞台裏で疑っています。 .

私も、ユーザーが別のボタンをクリックするのではなく、フォーム フィールドが変更されたときにフォームが自動送信されるようにしたいと考えていました。「送信」入力ボタンは引き続き必要ですが、非表示に設定できます。

以下は私にとってはうまくいきます:

    $('#lang_form_footer_form_select').bind('change',function(){
      $('#lang_form_footer_submit_btn').click();
    });
    mixpanel.track_forms("#lang_form_footer", "Language form - Footer");


    <form id="lang_form_footer" action="/i18n/setlang/" method="post">
    {% csrf_token %}
    {% get_current_language as LANGUAGE_CODE %}
    <input name="next" type="hidden" value="{{ redirect_to }}" />
      <select id="lang_form_footer_form_select" name="language">
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
          <option value="{{ language.code }}" {% if language.code == LANGUAGE_CODE %}selected="selected"{% endif %}>{{ language.name_local }}</option>
        {% endfor %}
      </select>
    <input id="lang_form_footer_submit_btn" type="submit" value="{% trans "Go" %}" style="display:none" />
    </form>

また、1 つの落とし穴: DOM セレクターをオーバーライドするため、input 要素に「submit」に設定された ID または名前がないことを確認してください。

于 2013-07-31T00:18:45.863 に答える
1

trackページの変更によりトラックが完了しないため、フォームを送信する直前に呼び出しても機能しません。track_formsそれが存在する理由です。残念ながら、この方法で送信されたフォームでは機能しません。

これを行う最も簡単な方法は、送信先のページのデータを追跡することです。

これを行う最善の方法は、フォーム データが処理されているサーバーでデータを追跡することです。

ちなみに、propertiestrack(_forms) するパラメーターはオプションなので、そのまま実行できますmixpanel.track('my event');

于 2013-02-19T00:08:21.490 に答える