检查页面上的某些 ajax 是否正在处理中


Check if some ajax on the page is in processing?

我有这个代码

$('#postinput').on('keyup',function(){ 
    var txt=$(this).val();
    $.ajax({
       type: "POST",
       url: "action.php",
       data: 'txt='+txt,
       cache: false,
       context:this,
       success: function(html)
       {
           alert(html);
       }
   });
});

$('#postinput2').on('keyup',function(){ 
    var txt2=$(this).val();
    $.ajax({
       type: "POST",
       url: "action.php",
       data: 'txt2='+txt2,
       cache: false,
       context:this,
       success: function(html)
       {
           alert(html);
       }
   });
});

假设用户单击#postinput,处理需要 30 秒。如果在此期间用户单击#postinput2.我想给他一个警觉"Still Processing Your Previous request".有没有办法检查某些 ajax 是否仍在处理中?

假设我在页面上运行了很多 ajax。有没有一种方法可以知道是否只有一个正在处理中?

您可以根据

AJAX 调用的开始时间将变量设置为 truefalse,例如:

var ajaxInProgress = false;
$('#postinput2').on('keyup',function(){ 
    var txt2=$(this).val();
    ajaxInProgress = true;
    $.ajax({
      ..
      ..
      success: function(html) {
          ajaxInProgress = false;

现在,如果您需要在通话前检查它:

if (ajaxInProgress)
    alert("AJAX in progress!");

或者,使用全局 AJAX 事件设置变量

$( document ).ajaxStart(function() {
   ajaxInProgress = true;
});
$( document ).ajaxStop(function() {
   ajaxInProgress = false;
});