2012-05-14 11 views
2

jQuery/Ajaxでファイルをチェックしたいと考えています。jQuery Ajax:X秒ごとに(アクセス権を持つ)ファイルをチェックする方法は?

ファイルを生成していますが、これには30〜90秒かかります。

ファイルがすでに存在する(生成されている)場合、jQuery/AjaxはすべてのX(たとえば5)秒間を確認します。

どうすればいいですか?

さらに、ファイルが本当に完全に生成されたかどうかを知りたいので、一意のアクセスを確認する(または、ドキュメントが書き込まれるためにエラーが発生した場合)。

これは可能ですか?

ファイルをチェックするために次のコードスニペットが見つかりましたが、常に「OK」を送信するようです。

$.ajax({ 
url:'http://www.example.com/somefile.ext', 
type:'HEAD', 
error: 
    function(){ 
     //do something depressing 
    }, 
success: 
    function(){ 
     //do something cheerful :) 
    } 
}); 

ソース:http://www.ambitionlab.com/how-to-check-if-a-file-exists-using-jquery-2010-01-06

+0

[x秒ごとに機能を繰り返す](http://stackoverflow.com/questions/3138756/jquery-repeat-function-every-60-seconds)、そうですか? – sp00m

答えて

2

どのようにファイルを生成していますか?

IMOでは、ファイル生成の開始時に、そのコンテンツが生成されている間にサーバーにhttp://www.example.com/somefile.extが既に存在しています。だからあなたはいつも成功のステータスを得るのです。

より良い方法は、{generated: true, fileUrl: 'yourFile'}を返すサーバーフック(例:http://www.example.com/checkFileStatus)を作成し、その代わりにsetTimeoutを使用して確認することです。

1
success: 
    function(res){ 
     // res -> will catch the response from server if file has been generated 
     // suppose server will send 'ok' after file generation so, res == 'ok' 
     // now check for response in every 5 seconds 
     var tm = setInterval(function() { 
        if(res == 'ok') { 
         alert('File made'); 
         clearInterval(tm); 

         // now here do what you want 

        } 
       }, 5000); 
    } 
0

あなたはこの代わりの$アヤックス

$('#divid').load('url').fadeIn("slow");}, 10000); // refresh every 10000 milliseconds 

を使用して、ファイル "URL" であなたのPHP/SQLコードを追加することができ

関連する問題