2010-12-07 109 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 
});