2017-05-12 20 views
0

私はfilestackでワードカウンタファイルを実行していますが、これが終了するとワード数をカウントしながら非表示にしています。forループが終了するまでロードを表示する

だから私はHTMLでこの持っている:

<div id="loading" style="display:none;clear:both;"> 
<img src="loading.gif"> 
</div> 
<input id="ff" type="filepicker" data-fp-apikey="<myAPI>" data-fp-mimetypes="image/*,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" data-fp-container="modal" data-fp-multiple="true" data-fp-button-class="btn btn-primary l-align" data-fp-button-text="Upload" data-fp-services="SKYDRIVE,COMPUTER,URL,GOOGLE_DRIVE,GMAIL" data-fp-language="es"> 
<div id="result"></div> 

そしてJSに私はこれを持っている:私は「$( "#ロード")を入れしようとしている

$("document").ready(function(){ 

$("#ff").change(function(){ 

    var out=''; 
    for(var i=0;i<event.fpfiles.length;i++){ 
     var n = i+1; 
     out+='<a target=_blank href=' + event.fpfiles[i].url + '>' + '<button type=button class=btn-sc2><i class=fa fa-file-text aria-hidden=true></i> ' + event.fpfiles[i].filename + '</button></a>';out+=' ' 

     if(event.fpfiles[i].mimetype=="image/jpeg"){ 

      $.post("filecount.php",{ 
       url: event.fpfiles[i].url 
      }).done(function(response){ 
       //functions to count words 
      });//post    

     } else if(event.fpfiles[i].mimetype=="application/msword"){ 

      var link = event.fpfiles[i].url; 
      var idfile = link.substr(link.lastIndexOf("/")+1); 
      var lcconvert = "https://process.filestackapi.com/output=format:txt/"+idfile; 

      $("#dkd").load(lcconvert, function(){ 
       $.post("filecount2.php",{ 
        url: $("#dkd").val() 
       }).done(function(response){ 
        //functions to count words 
       });//post     
      }); 
     } 
    };//for 
    $("#result").html(out); 
});//#ff 
}); 

を表示() ; 'と '$( "#loading")。hide();'ポスト機能のどの部分でも機能しません。ポスト機能が終了したときには表示されますが、表示されません。

私はいくつかの助けをしたいと思います。

+0

投稿が失敗する可能性があり、 'always'が成功と失敗の両方を処理するので、' done'の代わりに 'always'関数に隠しておくべきです – Escobar5

+0

あなたが必要とするのは、ループの各繰り返しにAJAXの約束を保存することです配列に( 'ajaxArray'と呼ぶ)、' $ .when.apply($、ajaxArray) 'を使ってすべてのAJAXリクエストがいつ完了したかを調べます。 – Terry

答えて

0

ajaxStart/Stop関数は、Ajax呼び出しを行うたびに起動します。

jQuery 1.8以降、ドキュメントには.ajaxStart/Stopをドキュメントにのみ添付してください。

あなたの特定のケースで
var $loading = $('#loadingDiv').hide(); 
$(document) 
    .ajaxStart(function() { 
    $loading.show(); 
    }) 
    .ajaxStop(function() { 
    $loading.hide(); 
    }); 

:これは上記のスニペットを変換するでしょう

$loading.show(); 
$.post("filecount.php",{ 
    url: event.fpfiles[i].url 
}).success(function(response){ 
    //functions to count words 
    $loading.hide(); 
});//post 

は、右の呼び出しの前にそれを表示し、成功関数または誤差関数の中でそれを隠します。

+0

私は別の$ .post ajaxを自分のWebページに持っていますが、どのように2つの特定のajax $ .postだけでこれを行うことができますか? – NekoLopez

+0

だから、AJAXのすべてのリクエストではなく、これらの2つだけで表示したいのですか? – Anokrize

+0

ええ、別のAjaxリクエストを実行する別のボタンがあるためです。 – NekoLopez

関連する問題