当数据库中存在新行时自动更新div

时间:2016-03-24 12:23:00

标签: javascript php jquery mysql ajax

我正在尝试在人访问页面之前检索表中存在的所有行,并且在更新div之后使用已添加到表中的任何数据行来更新div,因为用户已经访问过页面。(类似于Whatsapp,整个convo可见,新消息被添加到底部)。

这是我到目前为止使用Ajax的方法,但我不知道从这个阶段开始的前进方向。它目前仅提供最新记录(如果我手动设置TIMESTAMP在第二个文件中),而不是之前的所有其他记录。理想情况下,我应该将时间发布到第二个文件。

我如何修改代码以获得我想要的功能?

显示(autoload.php)

var time = (new Date).getTime();
var interval = 1000;  // 1000 = 1 second, 3000 = 3 seconds
function doAjax() {
    $.ajax({
            type: 'POST',
            url: 'autoload2.php',
            dataType: 'json',
            data: 'time='+time,
            success: function (data) {
                $('.inner').append(data);
            },
            complete: function (data) {
                setTimeout(doAjax, interval);
            }
    });
}
setTimeout(doAjax, interval);

获取数据(autoload2.php)

$time = $_POST['time'];
$results = mysql_query("SELECT post_name FROM posts WHERE postime > $time limit 1");
$row = mysql_fetch_assoc($results);
$res = $row['post_name'];
echo json_encode($res);

注意:上面用于查询的时间不起作用,只有在使用时间戳进行硬编码时才会起作用。

1 个答案:

答案 0 :(得分:0)

我认为你需要搬家

var time = (new Date).getTime();

到你的功能

因为您的时间变量未更改

var interval = 1000;  // 1000 = 1 second, 3000 = 3 seconds
function doAjax() {
    var time = (new Date).getTime();
    $.ajax({
        type: 'POST',
        url: 'autoload2.php',
        dataType: 'json',
        data: 'time='+time
    }).done(function(response){
        console.log(response);
    });
}

setInterval(doAjax, interval);

在php中:

$data = Array('name' => 'name of last row');
header('Content-Type: application/json');
echo json_encode($data);