jQuery Ajax:如何检查文件的每X秒(带访问权限)?

时间:2012-05-14 09:22:30

标签: jquery ajax

我想用jQuery / Ajax检查文件。

我正在生成一个文件,这可能需要30到90秒。

如果文件已存在(已生成),我希望jQuery / Ajax检查每个X(例如5)秒。

我该怎么做?

另外我想知道文件是否真的是完全生成的,因此我想检查唯一访问(或者如果发生错误,因为文档正在编写)。

这可能吗?

我找到了以下代码片段来检查文件,但似乎总是发送“确定”。

$.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

3 个答案:

答案 0 :(得分:2)

您是如何生成文件的?

IMO,正在发生的事情是,在文件生成开始时,服务器上已存在http://www.example.com/somefile.ext,而其内容正在生成。这就是你一直获得成功状态的原因。

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

答案 1 :(得分: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);
    }

答案 2 :(得分:0)

您可以使用此代替$ .ajax

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

将您的php / SQL代码添加到文件“url”