【发布时间】:2009-12-11 16:26:29
【问题描述】:
是的,我知道 Google Analytics。我们将它用于我们的整体网站指标,我知道我们可以跟踪单个链接。但是,我们需要一个针对非常具体的链接的跟踪解决方案,并且我们需要我们的 Web 应用程序实时可以使用这些跟踪数据,所以我编写了自己的解决方案:
jQuery:
$.fn.track = function () {
var source, url, name, ref, $this;
$this = $(this);
if (window.location.search.substring(1) != '') {
source = window.location.pathname + "?" + window.location.search.substring(1);
} else {
source = window.location.pathname;
}
url = jQuery.URLEncode($this.attr('href'));
name = $this.attr('name');
ref = jQuery.URLEncode(source);
$this.live('click', function (click) {
click.preventDefault();
$.post('/lib/track.php', {
url: url,
name: name,
ref: ref
}, function () { window.location = $this.attr('href'); });
});
};
...使用 jQuery URLEncode 插件 (http://www.digitalbart.com/jquery-and-urlencode/)。
现在,这段代码可以在我的 PHP 后端和我的机器上正常运行,但它似乎无法对其他人可靠地运行。有时通过jQuery传入的参数没有传入,导致数据库中没有name、url或ref的记录。
在我的一生中,我无法弄清楚为什么会发生这种情况;我知道 $.post 正在触发,因为数据库中有记录(在 PHP 中,我还记录了请求的 IP 以及时间戳),但在许多情况下,PHP 脚本正在接收空白的 $_POST 变量jQuery。
我已经在工作场所可以访问的每个浏览器上对其进行了实时测试,所有浏览器对我来说都可以正常工作;然而,大约 75% 的所有记录(不是由我的计算机创建的)都是空白的(其中大多数都使用与我相同的浏览器)。
为什么会发生这种情况?
【问题讨论】:
-
显然您已经在这个解决方案上投入了一些时间,但以防万一;你见过混合面板吗?撇开成本不谈,它完全符合您的要求……
标签: php jquery click-tracking