Google Analytics - 使用GET而不是POST

时间:2013-03-27 21:58:44

标签: javascript forms google-analytics

我需要在表单方法上使用GET vs POST,但GATC cookie数据没有正确附加到URL,因为表单的数据超过了Google的GATC数据(使用linkByPost)。

我已经阅读了here发布的潜在解决方案,但似乎是让GET表现得非常疯狂的工作量。我还偶然发现了另一个解决方案here,但IE在网址的“锚点”部分之后并不尊重任何内容。

有没有其他想法?如果我无法通过JS处理这个问题,我将不得不进入处理表单操作的脚本并手动按下查询字符串(假设GATC数据在$ _REQUEST数组中)。使用get。

时,无法通过$ _REQUEST数组获得FTR,GATC数据

2 个答案:

答案 0 :(得分:2)

为了将来参考,如果有人遇到同样的问题,这就是我实施的解决方案。我从这个SO post的答案中提取了一些代码,并将其与this post背后的想法相结合,在那里它本地化了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(); }
    });
});

答案 1 :(得分: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);
});