2017-08-21 4 views
-1

ajaxを使って "async = false"リクエストを送信すると、レスポンスの継続中にローディングサインを表示できますか?そして、はい、警告メッセージが表示されますが、私は積み込みサインを見たことがありません。私はbeforeSend関数がchromeで正しく機能しないと思うでしょう

ところで、Firefoxには何の問題もありません。この非同期値をtrueに変更すると、実際にはクロムでも機能します。

var HttpUtil = { 

get : function(url, onSuccess, onFailure) { 
    this.ajaxCall('GET', url, this.defaultContentType, null, false, false, onSuccess, onFailure); 
}, 

post : function(url, request, onSuccess, onFailure) { 
    var showSuccessMsg = url.indexOf('/filter') < 0; 
    this.ajaxCall('POST', url, null, JSON.stringify(request), showSuccessMsg, true, onSuccess, onFailure); 
}, 

postFormData : function(url, request, onSuccess, onFailure) { 
    this.ajaxCall('POST', url, false, request, true, true, onSuccess, onFailure); 
}, 

put : function(url, request, onSuccess, onFailure) { 
    this.ajaxCall('PUT', url, null, JSON.stringify(request), true, true, onSuccess, onFailure); 
}, 

delete : function(url, onSuccess, onFailure) { 
    this.ajaxCall('POST', url, null, null, true, true, onSuccess, onFailure); 
}, 

ajaxCall : function(type, url, contentType, request, showSuccessMsg, showLoading, onSuccess, onFailure) { 
    if(contentType == null){ 
     contentType = 'application/json'; 
    } 
    $.ajax({ 
     url: url, 
     type: type, 
     data: request, 
     async: false, 
     contentType : contentType, 
     processData : false, 
     success: function(data) { 
      if(showSuccessMsg){ 
       ShowMessage.success("Success!", function onConfirm(){ 
        onSuccess(data); 
       }); 
      }else{ 
       onSuccess(data); 
      } 
     }, 
     error: function(error) { 
      if (onFailure instanceof Function) { 
       onFailure(error); 
      } else { 
       if(error.responseJSON){ 
        ShowMessage.error(error.responseJSON.status, error.responseJSON.message); 
       }else{ 
        ShowMessage.error(JSON.stringify(error)); 
       } 
      } 
     }, 
     beforeSend : function() { 
      if(showLoading){ 
       //$('.loading1').css("z-index","11111"); 
       $('.loading1').css("display","block"); 
       //alert("1"); 
      } 
     }, 
     complete : function() { 
      if(showLoading){ 
       //$('.loading1').css("z-index","-1"); 
       $('.loading1').css("display","none"); 
      } 
     } 
    }); 
} 

}

答えて

0

これを試してみてください:

てみ送る前に1ミリ秒の遅延を追加:

beforeSend : function() { 
      if(showLoading){ 
       //$('.loading1').css("z-index","11111"); 
      setTimeout(function(){ 
      $('.loading1').css("display","block"); 
      }, 1); 

       //alert("1"); 
      } 
     }, 
+0

それをofcourseの後半に取り組んでいますこのように動作しますが、今回は閉じていません:) – radeveloper

+0

タイムアウトのために完全なメソッドに入らないため、終了しません。 – radeveloper

0

を、それはこのように動作ところで、それは:(

beforeSend : function() { 
      if(showLoading){ 
       $('.loading').css("display","block"); 
      } 
     }, 
     complete : function() { 
      if(showLoading){ 
       setTimeout(function(){ 
        $('.loading').css("display","none"); 
       }, 2000); 
      } 
     } 
関連する問題