javascript
  • php
  • jquery
  • ajax
  • 2013-10-29 29 views 4 likes 
    4

    我有这样的代码检查页面上的某个Ajax是否正在处理中?

    $('#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秒process.If在此期间用户点击#postinput2。我想给他一个警报"Still Processing Your Previous request"。有没有办法可以检查一些Ajax是否仍在处理?

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

    +0

    因此,快速(也可能脏)IDE我的一个是:只是使用全局布尔“isProcessing”并将其设置为true/false,同时处理/在Ajax的成功方法。编辑:好的,现在有和答案一样的东西;) – Dominik

    +0

    @Dominik tnx ..如果我在同一页面上有一个ajax假设为5,那么这个真假方法将不起作用。是否有任何方法来检查,即使1 ajax正在进行..? – Ace

    +1

    只需检查'$ .active'属性。它在官方文档中没有提到,它可能会在以后更改,但目前它[由单元测试覆盖](https://github.com/jquery/jquery/blob/705216dc4664a85cdb44b460f8c2e0edcf27dd97/test/unit/ajax.js#L1957) ,并没有改变[自2010](http://stackoverflow.com/questions/3148225/jquery-active-function),甚至有一些错误跟踪附加。 ) – raina77ow

    回答

    6

    您可以将变量设置为truefalse根据AJAX调用开始时的,例如:

    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; 
    }); 
    
    +0

    @RoryMcCrossan - 甚至没有想到:\ - 我希望与OP的逻辑,2永远不会并发,但有一个机会..hmm ..ideas ? – tymeJV

    +0

    tnx ..我想问一下,如果我在同一页上有多个ajax假设5,那么这个真假方法将不起作用。是否有任何方法来检查,即使1 ajax正在进行..? – Ace

    +0

    呃不是我所知道的 – tymeJV

    相关问题