2

jQuery/Ajaxでファイルをチェックしたい。

ファイルを生成していますが、これには 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

4

3 に答える 3

2

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

IMO、何が起こっているかというと、ファイル生成の開始時に、http://www.example.com/somefile.extそのコンテンツが生成されている間にサーバー上に既に存在しているということです。そのため、常に成功ステータスが得られます。

より良いアプローチは、代わりにそれをチェックするために setTimeout をhttp://www.example.com/checkFileStatus返し、使用するサーバー フック (例: )を作成することです。{generated: true, fileUrl: 'yourFile'}

于 2012-05-14T09:34:19.660 に答える
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);
    }
于 2012-05-14T09:27:26.923 に答える
0

$.ajaxの代わりにこれを使用できます

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

そして、ファイル「url」にphp/SQLコードを追加します

于 2012-05-14T09:31:57.903 に答える