1

フォーム メソッドで GET と POST を使用する必要があるという問題に遭遇しましたが、フォームのデータが Google の GATC データを (linkByPost を使用して) 打ち負かしているため、GATC Cookie データが URL に正しく追加されません。

ここに投稿された潜在的な解決策を読みましたが、GET を動作させるには非常に多くの作業が必要なようです。また、ここで別の解決策を見つけましたが、IE は URL の「アンカー」部分の後は何も尊重しません。

他にアイデアはありますか?JS でこれを処理できない場合は、フォーム アクションを処理するスクリプトに移動し、クエリ文字列を手動で処理する必要があります (GATC データが $_REQUEST 配列にあると仮定します)。get を使用する場合、FTR、GATC データは $_REQUEST 配列経由では利用できません。

4

2 に答える 2

2

今後の参考のために、誰かが同じ問題に遭遇した場合に備えて、これが私が実装した解決策です。このSO 投稿への回答からいくつかのコードを取り出し、この投稿の背後にあるアイデアと組み合わせて、GATC データをローカライズし、それぞれのフォームに隠しフィールドを追加します。

結果のコード:

$(document).ready(function() {
    $('#formId').submit(function(e) {

        try {

            e.preventDefault();

            var form = this;

            if (typeof _gat !== 'undefined') {

                _gaq.push(['_linkByPost', this]);

                var pageTracker = _gat._getTrackerByName();

                var url = pageTracker._getLinkerUrl(form.action);

                var match = url.match(/[^=&?]+\s*=\s*[^&#]*/g);

                for ( var i = match.length; i--; ) {

                    var spl = match[i].split("=");

                    var name = spl[0].replace("[]", "");

                    var value = spl[1];

                    $('<input>').attr({
                        type: 'hidden',
                        name: name,
                        value: value
                    }).appendTo(form);
                }
            }

            setTimeout(function() { form.submit(); }, 400);
        } catch (e) { form.submit(); }
    });
});
于 2013-03-27T23:43:23.130 に答える
0

jQuery シリアライズを使用してフォームの要素を取得し_getLinkerUrl、クロスドメイン トラッキング データを追加できます。

$('#formID').submit(function(e) {
  var pageTracker = _gat._getTrackerByName();
  var url = this.action + '?' + $(this).serialize();
  url = pageTracker._getLinkerUrl(url);
  if (this.target != '_blank') location.href = url;
  else window.open(url);
});
于 2013-03-28T14:15:45.957 に答える