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已经存在于服务器上,同时正在生成其内容。这就是为什么您始终获得成功状态的原因。

更好的方法是创建一个服务器钩子(例如http://www.example.com/checkFileStatus),它会返回{generated: true, fileUrl: 'yourFile'}并使用 setTimeout 来检查它。

于 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 回答