2009-08-27 23 views
1

我想知道是否有辦法創建即使文件存在於服務器上也可能出現的突發新聞div,即使動態頁面已被靜態保存以實現緩存目的。如果文件存在,用ajax創建一個「Breaking News」div?

E.g.每一頁(動態/靜態)有一個空的帶有ID:

<div id="breaking"></div> 

有沒有一種方法,在頁面加載,有阿賈克斯檢查文件(比如breaking.html)服務器上存在。如果沒有在div保持爲空,如果它存在,它填充DIV與文件的內容:

<div id="breaking">Edward Kennedy passes away. Details to follow.</div> 

我想我曾經看到這樣的描述。這可能是一種很好的方式,可能會在動態頁面和頁面上發佈突發新聞,這些頁面已生成靜態頁面以減少服務器負載,但可能不會過期並重新生成一段時間。

回答

1

AJAX無法專門檢查文件是否存在服務器端(因爲Javascript是客戶端技術),但是您可以編寫您的AJAX成功和失敗回調,以便它們在文件中獲得404請求。

作爲一個側面說明,你不一定需要HTML中的空白div。您可以隨時在AJAX成功回調中插入它。

2

您可以嘗試使用jQuery更新div,例如This stackoverflow question

jQuery意味着你不必寫太多無趣的Javascript,並可以專注於一個很好的OO接口的很酷的東西。這裏是這個問題的代碼片段:

function update() { 
    $("#notice_div").html('Loading..'); 
    $.ajax({ 
    type: 'GET', 
    url: 'response.php', 
    timeout: 2000, 
    success: function(data) { 
     $("#some_div").html(data); 
     $("#notice_div").html(''); 
     window.setTimeout(update, 10000); 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     $("#notice_div").html('Timeout contacting server..'); 
     window.setTimeout(update, 60000); 
    } 
} 

這應該給你一個良好的開端。另外一本jQuery書可能是一個好主意,如果你想使用它很多(但在線文檔也很好)

2

你不能使用JavaScript/AJAX檢查文件是否存在。你需要一些服務器端編碼。

一種方法是讓您的JS方法調用可以執行file.exist的Web服務,如果它存在,那麼它將流傳回文件的內容。否則,它只是返回一個空的流。然後,客戶端會查看響應長度是否大於0,如果是,則顯示突發新聞內容。

您可以讓JS方法嘗試加載BreakingNews.html文件,並根據您如何設置404,將其內容加載到div。你只需要捕獲空404響應返回時。你可以只有一個空的BreakingNews.html(當沒有重大新聞時)文件,這樣你就可以測試內容的長度,而不是文件是否存在。

1

發送請求和接收使用AJAX,也許是一個JSON或XML響應來自服務器的響應,然後用類似處理您的響應後,下面的內容:

breakingDiv = document.getElementById("breaking"); 
breakingDiv.innerHTML = TheContentsFromTheServerResponse; 
相關問題