2009-08-27 50 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; 
相关问题