Javascript Jquery单击跟踪鼠标向下vs单击

Javascript Jquery单击跟踪鼠标向下vs单击,javascript,jquery,ajax,click-tracking,Javascript,Jquery,Ajax,Click Tracking,我需要跟踪我们网站目录中的出站点击,并希望这样做,以便实际url位于href中。比如: <a href="http://www.example.com" id="a24" class="link" >Go to Example</a> $('a.link').click( function(e){ // Prevent the browser from running away e.preventDefault(); // I've change

我需要跟踪我们网站目录中的出站点击,并希望这样做,以便实际url位于href中。比如:

 <a href="http://www.example.com" id="a24" class="link" >Go to Example</a>
$('a.link').click( function(e){

   // Prevent the browser from running away
   e.preventDefault();

   // I've changed this to POST to make it a bit more secure
   // You can access the link ID with $_POST['link_id'] now
   $.post('/tiger/sal/clicks/click.php', { link_id: $(this).attr('id') });

   // Wave goodbye
   window.location.href = $(this).attr('href');

});

在浏览器引导之前,您没有给jQuery足够的时间来计算所有内容。你为什么不试试这样的方法呢:

 <a href="http://www.example.com" id="a24" class="link" >Go to Example</a>
$('a.link').click( function(e){

   // Prevent the browser from running away
   e.preventDefault();

   // I've changed this to POST to make it a bit more secure
   // You can access the link ID with $_POST['link_id'] now
   $.post('/tiger/sal/clicks/click.php', { link_id: $(this).attr('id') });

   // Wave goodbye
   window.location.href = $(this).attr('href');

});

我不明白为什么它不起作用

当我测试它时,它可以工作,但url端点需要在AJAX调用中修复:

$(function(){
  $('a.link').click( function(e){
    var my_id = $(this).attr('id');
    var href = $(this).attr('href');
    $.ajax({    
      type: "GET",
      url: "/tiger/sal/clicks/click.php?id=" + my_id,
      success: function(d){
          // allow it to successfully call the server before redirecting.
          window.location = href;
      }
    });
    return false;
  });
});

我不会在“mousedown”中这样做,因为这并不能保证用户确实点击了链接。

谢谢,但即使mousedown和click.php需要10秒才能完成(我在click.php文件中包括sleep(10)),它也能工作。因此,它会立即将用户发送到站点,大约10秒后,点击记录会输入到表中。这就是我想要它做的,我想我只是想知道为什么它与mousedown而不是click一起工作,以及我是否正在做任何可能导致clicktracking出现问题的事情。好的。我已经编辑了我的答案。您希望使用jQuery发送一个
$.post()
请求——这将把请求发送到服务器,而不是等到请求完成后再将用户发送到链接目标。这会将所有必要的信息发送到要处理的脚本,而不需要用户等待脚本完成。另外,我会尽量避免使用
sleep()
,因为这对UI不太好。非常感谢,我现在需要离开,但我会尽快测试。另外,我只是把睡眠放在那里,看看如果服务器真的很慢会发生什么,以及它是否会减慢人们到达目标url的速度。所以我会在制作中删除它。非常感谢,但不知怎么的,这并没有为我执行脚本。它重定向用户,但不会像使用mousedown时那样将记录添加到表中,而不会成功。