只有一个ajax调用,等到下次点击直到成功

时间:2010-08-28 17:14:17

标签: javascript jquery

如果用户在运行ajax调用的链接上单击很多次,它只会在成功后再次运行时如何防止

3 个答案:

答案 0 :(得分:2)

如果你的意思是我认为你的意思,那么只要点击按钮你就会禁用你的ajax功能中的按钮(在你实际制作一个http请求之前)。然后,一旦你的ajax调用完成,你的onreadystate函数就会重新启用它。

禁用按钮,如果它有ID。

document.getElementById("theidofthebutton").enabled = false;

重新启用它......

document.getElementById("theidofthebutton").enabled = true;

编辑:我看到你指的是一个链接而不是一个按钮。我可能错了,但我认为你仍然可以以同样的方式禁用。

答案 1 :(得分:2)

一个简单的解决方案是在用户点击时向链接添加一个类,并在收到响应时删除该类。

每次点击链接都会检查pending类是否存在,如果没有,则仅发送AJAX请求。

然后complete:回调删除了pending类。

$('a.myLink').click(function() {
    var $th = $(this);
    if( !$th.hasClass('pending') ) {
        $th.addClass('pending');
        $.ajax({
          url:'something',
          complete: function() {
              $th.removeClass('pending');
          }
        });
     }
});

答案 2 :(得分:1)

尝试使用jquery插件BlockUI阻止用户再次点击该链接。这可以在元素或页面级别完成。

// unblock when ajax activity stops 
$(document).ajaxStop($.unblockUI); 

function test() { 
    $.ajax({ url: 'wait.php', cache: false }); 
} 

$(document).ready(function() { 
    $('#pageDemo2').click(function() { 
        $('div.test').block({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' }); 
        test(); 
    });  
});