JQuery中的异步日志记录

时间:2010-12-07 14:23:55

标签: javascript asp.net jquery

Javascript代码:

$.ajaxSetup({
  async: true
});

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

服务器上logsomething页面上的ASP.NET代码:

Thread.Sleep(10000);

当我点击链接时,我必须等待服务器的响应。在这种情况下,我必须等待10秒才能转发到我要求的页面。

有可能阻止这种情况吗?

3 个答案:

答案 0 :(得分:4)

首先你不需要:

$.ajaxSetup({
    async: true
});

因为默认情况下AJAX请求是异步的(这就是A代表的异步)。

接下来,你可以从return false处理程序click来阻止默认操作(跟随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 :(得分:0)

这样的事情应该这样做 - 基本上你不希望链接像链接那样:

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

答案 2 :(得分:0)

我不会使用$ .get而是使用$ .ajax - 它可以让你指定更多。如果这不起作用,请尝试查看

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

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