当ajax调用在后台运行时无法输入

时间:2014-04-16 13:24:02

标签: php jquery ajax

我有一个网站,我有set_timeout在一段时间后调用ajax 当ajax调用在后台运行时,我无法输入单个单词。 这是我的代码..

我有几个字段,如textarea和输入,但只要ajax调用在后台运行,我就无法输入。我也禁用了触发功能,但是如果任何ajax调用运行,我面临同样的问题。

var Trigger = function(){
    var jsondata={action:"trigger"};
  CallAjaxPW('', jsondata, 'ajax_trigger.php', function callBack(data) {
                              var parsed_data=  jQuery.parseJSON(data);

                                if (parsed_data)
                                   {

                                      if(parsed_data[0].messages>0){

                                          if($('#msg1').css('display')=='none'){
                                            $('#msg1').show();
                                            $('#msg1').text(parsed_data[0].messages);
                                        }
                                        else{
                                           $('#msg1').text(parsed_data[0].messages); 
                                        }

                                      }
                                     else if(parsed_data[0].messages==0){
                                           $('#msg1').hide();
                                        }
                                       if(parsed_data[0].friend_requests>0){

                                          if($('#friend_requests').css('display')=='none'){
                                            $('#friend_requests').show();
                                            $('#friend_requests').text(parsed_data[0].friend_requests);
                                        }
                                        else{
                                           $('#friend_requests').text(parsed_data[0].friend_requests); 
                                        }

                                      }
                                        else if(parsed_data[0].friend_requests==0){
                                           $('#friend_requests').hide();
                                        }
                                      if(parsed_data[0].notifications>0){

                                          if($('#noti').css('display')=='none'){
                                            $('#noti').show();
                                            $('#noti').text(parsed_data[0].notifications);
                                        }
                                        else{
                                           $('#noti').text(parsed_data[0].notifications); 
                                        }

                                      }

                               }
                                else
                                   {
                                   }
                              });
                          };

/////////////////////////////Calling Trigger////////////////////////////////////

setInterval(Trigger,10000);


////////////////////////////////////////////////////////////////////////////////



function CallAjaxPW(form, postData, url, callBack, b, c)
{
   var sendData;
   if (form == "")
   {
      sendData = postData;
   }
   else if (postData == "")
   {
      sendData = $(form).serialize();
   }
   $.ajax({
      type: 'POST',
      url: url,
      cache: false,
      async: true,
      beforeSend: b,
      complete: c,
      data: sendData,
      success: callBack,
      error: function(httpRequest, textStatus, errorThrown) {
         console.log("status=" + textStatus + ",error=" + errorThrown);
      }


   });

}

1 个答案:

答案 0 :(得分:0)

执行以下操作,每隔x秒触发一次代码。否则,即使最后一个未完成,也会进行新的调用。并且(我不会对此声明不感兴趣)javascript比setInterval更喜欢setTimeout,这会提高性能。

function trigger() {
    //working stuff here in sync

    //call set timeout AFTER ajax request has completed
    setTimeout(function() {
        trigger();
    }, 1000);
}