0

サイトのディレクトリからのアウトバウンド クリックを追跡する必要があり、実際の URL が href に含まれるようにしたいと考えています。何かのようなもの:

 <a href="http://www.example.com" id="a24" class="link" >Go to Example</a>

これは、私が以下で使用している JQuery です。click.php ファイルは基本的にリンク ID を検索し、クリック情報を mysql テーブルに挿入します。

click.php が完了するまでに時間がかかる場合でも、これは問題なく機能するようです。つまり、完了前に click.php を 10 秒間スリープするように設定しても、ユーザーはすぐにリンク先 URL にリンクします。

$('a.link').click の代わりに$('a.link'). mousedown を使用 しています .click を使用すると、機能しません (クリックは記録されません)。.click 関数を使用すると機能せず、 .mousedown関数でのみ機能する理由が知りたいです。

これは JQuery でクリックをキャプチャする良い方法ですか、それとももっと良い方法がありますか? (Javascript がオフになっている人はカウントされないことを認識しています)。

$('a.link').mousedown( function(e){

        var my_id = $(this).attr('id');

        $.ajax({    
          type: "GET",
          url: "/tiger/sal/clicks/click.php?id=my_id"
        });

        return true;

});
4

2 に答える 2

2

ブラウザが指示する前にすべてを計算するのに十分な時間を jQuery に与えていません。次のようなことを試してみませんか。

$('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');

});
于 2012-04-04T01:22:51.993 に答える
0

なぜうまくいかないのかわかりません。

これは私がテストしたときに機能しますが、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;
  });
});

「マウスダウン」では、ユーザーが実際にリンクをクリックしたことを保証するものではないため、これは行いません。

于 2012-04-04T01:31:06.970 に答える