Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 只有一个ajax调用,请等待成功,直到下一次单击_Javascript_Jquery - Fatal编程技术网

Javascript 只有一个ajax调用,请等待成功,直到下一次单击

Javascript 只有一个ajax调用,请等待成功,直到下一次单击,javascript,jquery,Javascript,Jquery,如果用户在运行ajax调用的链接上单击了很多次,那么它只有在成功后才能再次运行。如果你的意思是我认为你的意思,那么一旦单击按钮,你就会禁用ajax函数中的按钮(在你真正发出http请求之前)。一旦ajax调用完成,onreadystate函数将重新启用它 若按钮具有id,则禁用该按钮 document.getElementById("theidofthebutton").enabled = false; 要重新启用它 document.getElementById("theidofthebut

如果用户在运行ajax调用的链接上单击了很多次,那么它只有在成功后才能再次运行。如果你的意思是我认为你的意思,那么一旦单击按钮,你就会禁用ajax函数中的按钮(在你真正发出http请求之前)。一旦ajax调用完成,
onreadystate
函数将重新启用它

若按钮具有id,则禁用该按钮

document.getElementById("theidofthebutton").enabled = false;
要重新启用它

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

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

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

每次点击链接都会检查
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');
          }
        });
     }
});

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

// 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(); 
    });  
});
//当ajax活动停止时取消阻止
$(文档).ajaxStop($.unbui);
函数测试(){
$.ajax({url:'wait.php',cache:false});
} 
$(文档).ready(函数(){
$('#pageDemo2')。单击(函数(){
$('div.test').block({消息:'稍等…');
test();
});  
});

为什么不粘贴一些您从中开始的代码。MrVimes-我想您可能了解有关禁用链接的内容,但我做了一个快速测试。似乎不起作用。由于您使用的是jQuery,因此还可以使用jQuery.data()附加此“挂起”数据值,请参见:@Dancrumb-没错。添加类的好处在于,您可以使用它向用户提供一些视觉反馈,以显示链接不可单击。我敢打赌,它比访问
.data()
还要快。不过我不确定。