我需要在表单方法上使用GET vs POST,但GATC cookie数据没有正确附加到URL,因为表单的数据超过了Google的GATC数据(使用linkByPost)。
我已经阅读了here发布的潜在解决方案,但似乎是让GET表现得非常疯狂的工作量。我还偶然发现了另一个解决方案here,但IE在网址的“锚点”部分之后并不尊重任何内容。
有没有其他想法?如果我无法通过JS处理这个问题,我将不得不进入处理表单操作的脚本并手动按下查询字符串(假设GATC数据在$ _REQUEST数组中)。使用get。
时,无法通过$ _REQUEST数组获得FTR,GATC数据答案 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);
});