我想用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
答案 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”
中