2012-02-13 8 views
2

私のサイトの誰かがリンクをクリックすると、サーバーに非同期の投稿をする必要があります。私は以下のコードを試しましたが、私が望むサーバー上でタスクを実行しているようには見えません。問題は、何かが起こる前にリンクをたどっていることだと思います。私は実際にサーバーからの応答を待つ必要はありません、私はそれに電話を送信する必要があります。誰か助けてくれますか?おそらく、それが呼び出される前にリンクをたどるのを遅らせるか、$ .postを使ってメモを取るべきでしょうか?JQuery:リンクが行われる前に投稿を実行する

$("#item").click(function (ev) { 
    $.post(link_to_something); 
}); 

<a id="item" href="www.google.com">Link</a> 

答えて

3

最初に、clickハンドラからfalseを返すことでリンクのデフォルト動作をキャンセルします。これにより、AJAXリクエストが完了するのに十分な時間が与えられます。それが完了したときに、成功コールバックの内側に、あなたは、リンクが指しているどこにリダイレクトすることができます。あなたは、ポストが成功したか、そして、あなたが行くべきではないかどうかを判断するために応答をチェックする必要が

$("#item").click(function (ev) { 
    var self = this; 
    $.post(link_to_something, function() { 
     window.location.href = self.href; 
    }); 
    return false; 
}); 
+0

ありがとうございます。これは完全に機能します。 – Red

0

$("#item").click(function (e) { 
    e.preventDefault(); 
    $.post(link_to_something, function() { 
     window.location = $(this).attr('href'); 
    }); 
}); 
関連する問題