2011-09-26 82 views
3

我有這種情況,我必須檢查服務器上是否存在使用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

看不到任何聽衆的理由。當你收到客戶的請求時,請檢查文件。 –

回答

6

您可以使用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

0

我會根據請求啓動偵聽器線程,並傳入偵聽器在檢測到文件後更新的狀態對象。同樣在UI線程上,我會檢查狀態對象的狀態,如果它已被偵聽器線程更新並執行必要的操作。 UI線程基本上是一個定時器上的jQuery ajax調用。

1

在jQuery 1.5中添加了根據服務器返回的HTTP狀態碼運行不同功能的功能。因此,如果服務器響應200,則執行所需的功能,如果文件存在,並且如果它返回404,則執行所需的功能(如果不存在)。

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

欲瞭解更多信息,請參閱:jQuery.ajax在jQuery文檔。

編輯:從您的意見,我可以看到,你需要繼續檢查,直到文件存在。如果是這樣,只需將該請求包裝在函數中,然後在未找到該文件的情況下調用該函數。儘管使用setTimeOut,否則您將通過連接請求發送垃圾郵件。