使用Jquery等待文件

问题描述:

我有这种情况,我必须检查服务器上是否存在使用JQuery的文件。我可以使用Jquery Ajax来执行此操作,但是我需要一个在服务器上侦听文件存在的侦听器,如果存在,那么触发一些操作。 要在这里提供更多的感觉就是一个例子,使用Jquery等待文件

client--> checks on server for file(time 0)--> not present 
client--> checks on server for file(time 5)--> not present 
client--> checks on server for file(time 10)--> file present--> return some message to client. 

所以,如何实现监听器,检查服务器上的某些特定文件,并通知用户可用时。

+0

好的,但你的问题是什么? –

+0

我更新了问题,对此感到抱歉。我想知道如何实现监听器。 – g33kb0ne

+0

看不到任何听众的理由。当你收到客户的请求时,请检查文件。 –

您可以使用ajax polling..means以特定的时间间隔检查服务器。

您可以使用setInterval函数中的Java脚本调用特定功能..和写在功能Ajax请求。而发现的文件,只需清除定时器

检查示例代码

var timerForLoadingResult= setInterval(checkServerForFile,4000);//call the fnction in every 4 seconds.write ajax in that function. 

function checkServerForFile() {     
      $.ajax({ 
       type: "POST", 
       cache: false, 
       url: url,     
       success: function (result) {       
       if(check result) //if the file is on server 
       { 
       //do something 
       clearInterval(timerForLoadingResult)  // clear timer   
       }     
       ; }     
      }); 

     } 
+0

是的这种看起来像我想要的。会试试看!谢谢 ! – g33kb0ne

+0

谢谢你!你做了我的一天:) – SaganTheBest

+0

+1,大量使用setInterval/clearInterval函数。虽然我认为一些可能会被重复性服务器调用的人说话,可能会产生所有网络流量。我对他们说 - 放松一下,如果文件不存在,它只是传输字节。 – Sablefoste

我会根据请求启动侦听器线程,并传入侦听器在检测到文件后更新的状态对象。同样在UI线程上,我会检查状态对象的状态,如果它已被侦听器线程更新并执行必要的操作。 UI线程基本上是一个定时器上的jQuery ajax调用。

在jQuery 1.5中添加了根据服务器返回的HTTP状态码运行不同功能的功能。因此,如果服务器响应200,则执行所需的功能,如果文件存在,并且如果它返回404,则执行所需的功能(如果不存在)。

$.ajax({ 
    statusCode: { 
    404: function() { 
     // file not found 
    }, 
    200: function() { 
     // file found 
    } 
    } 
}); 

欲了解更多信息,请参阅:jQuery.ajax在jQuery文档。

编辑:从您的意见,我可以看到,你需要继续检查,直到文件存在。如果是这样,只需将该请求包装在函数中,然后在未找到该文件的情况下调用该函数。尽管使用setTimeOut,否则您将通过连接请求发送垃圾邮件。