0

我有 index.php 和 images.php。我想要的是 index.php 上的某个 div 自动从 images.php 获取它的内容,并在 images.php 上出现新内容时刷新。我目前有这个:

$(document).ready(function() {
$.ajaxSetup({ cache: false });
setInterval(function() {
    $('#images').load('images.php');
}, 500);
});

这工作正常,但它每 .5 秒刷新一次 div,这是我不想要的,我希望它检测何时将新内容插入到 images.php 中,然后将其加载。

但问题是,在 images.php 上我有一些时间戳(1 分钟前等)。jQuery 会将这些检测为更改,然后刷新。

有没有办法统计<img>images.php页面上的图片标签(索引.php。

4

2 回答 2

0
var imageWrapper = $('#images'),
    imageCount = $imageWrapper.find('img').length;

setInterval(function() {
    $.get('images.php', function (html) {
        html = $(html);
        if ( html.find('img').length > imageCount ) {
            $imageWrapper.html( html );
        }
    });
}, 500);
于 2013-02-02T23:37:15.783 回答
0

最简洁的答案是不。

你应该明白,你的代码有服务器端和客户端。每当浏览器发送请求时,它都会获得一个格式化的 html 页面(不是要执行的 php 脚本)并获得所有嵌入的资源(图像、css、js 文件等)。

之后,客户端(浏览器)和服务器(您的 Web 服务器)之间不会进行任何通信。为了让您获得更新的“images.php”页面,您需要从服务器向当前正在查看您的页面的所有浏览器发送通知(您不知道 - 您需要与它们建立固定连接,但是 html协议是无状态的,这意味着没有简单的方法来完成它)。

因此,最简单的方法是让浏览器及时 ping 服务器 - 每 n 秒一次。不过,最好不要每 n 秒获取一次所有图像,而是最后一次更改日期 - 并且有一些逻辑可以在具有较新更改日期时获取新数据 - 这将减少您的应用程序发送的流量。

于 2013-02-02T23:31:30.420 回答