2010-12-07 28 views
1

Javascriptコード:サーバー上のlogsomethingページで非同期ログ

$.ajaxSetup({ 
    async: true 
}); 

$("a").live('click', function (event) { 
$.get(logsomething-URL); 
}); 

ASP.NETコード:

Thread.Sleep(10000); 

私はからの応答を待つ必要がリンクをクリックすると、サーバ。この場合、リクエストしたページに転送されるまでに10秒待たなければなりません。

これを防ぐことはできますか?

答えて

4

まず、あなたが必要としないが:AJAX要求は、デフォルトでは非同期であるため、

$.ajaxSetup({ 
    async: true 
}); 

(それは何Aスタンド用:非同期)。

clickハンドラから、あなたは可能性がreturn false(HREFに従うことです)デフォルトのアクションを阻止し、AJAX successハンドラで実際のリダイレクトを実行する次へ:

$('a').live('click', function (event) { 
    // store the location to redirect to later in the success callback 
    var href = this.href; 
    $.get('logsomething-URL', function(result) { 
     // Now after the AJAX call successfully returned 
     // perform the redirect 
     window.location = href; 
    }); 
    return false; 
}); 
+1

で見てみてください、あなたはまた、単に「event.preventDefaultを();」行うことができますあなたのクリック機能内の最初の行として。もっと見る:http://api.jquery.com/event.preventDefault/ –

+0

@Betard Fooser、はい、あなたは 'preventDefault'関数も使うことができます。基本的に同じです。 –

+0

リンクが必要な場合は、おそらく良い解決策になるでしょう。 これは私が心に留めていたものに対するエレガントな解決策ではないと思います。私は、ボタン、リンク、サブミットを処理する必要があります。リンクのクリックが実際にはリダイレクトであるかどうかはわかりません。それは別のものかもしれない。後続のタスクは不明です。 – user484204

0

をこのような何かがそれを行うべき - 基本的にはリンクがリンクのように行動したくない:私は$に.getを使用する代わりに、$アヤックスを使用することはありません

$("a").live('click', function (event) { 
    var linkTarget = $(this).attr('href'); 
    event.preventDefault(); 
    $.get(logsomething-URL, function(){ 
     window.location = linkTarget; 
    }); 
}); 
+0

リンクが必要な場合は、おそらく良い解決策になります。 これは私が心に留めていたものに対するエレガントな解決策ではないと思います。私は、ボタン、リンク、サブミットを処理する必要があります。リンクのクリックが実際にはリダイレクトであるかどうかはわかりません。それは別のものかもしれない。後続のタスクは不明です。 – user484204

0

- それはあなたがより多くを指定することができます。これが動作しない場合は、代わりにfalseを返すの

http://api.jquery.com/jQuery.ajax/

$.ajax({ 
    url: 'logsomething-URL', 
    success: function(data) {  
    alert('Success!'); 
    }, 
    global: false 
}); 
+0

そして、event.preventDefault()は、クリックイベントが宣伝されるのを止めるために使用されますが、必要があると述べました。ボタン/リンク上のすべてのイベントを1つのコールに要約すると、「イベント」の順序を制御できます。 –