2010-12-07 60 views
1

Javascript代碼:在服務器上logsomething頁面上異步日誌記錄在JQuery中

$.ajaxSetup({ 
    async: true 
}); 

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

ASP.NET代碼:

Thread.Sleep(10000); 

當我點擊一個鏈接我必須等待從響應服務器。在這種情況下,我必須等待10秒才能將其轉發到我請求的頁面。

可以預防嗎?

回答

4

首先,你並不需要:

$.ajaxSetup({ 
    async: true 
}); 

因爲AJAX請求是默認異步的(這是什麼A代表:異步)。

接下來你可以return falseclick處理程序,以防止默認動作(這是按照在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/ – 2010-12-07 14:34:34

+0

@Betard Fooser,是的,你也可以使用`preventDefault`函數。它基本上是一樣的。 – 2010-12-07 14:38:15

+0

如果我只是需要鏈接,它可能是一個很好的解決方案。 我不認爲這是我想到的優雅解決方案。我需要它來處理按鈕,鏈接和提交。我無法確定鏈接點擊是否是重定向。它可能是別的。隨後的任務是未知的。 – user484204 2010-12-08 09:50:25

0

像這樣的事情應該去做 - 基本上你不希望鏈接像一個鏈接:

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

我不會用$不用彷徨,而是使用$阿賈克斯 - 它可以讓你指定更多。如果這行不通,嘗試看看

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

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