1

我在 mysql 中有一个 twitter 流数据,它每 5-10 条记录/秒不断添加。现在,我想在客户端打开页面时开始获取每条创建时间的新记录,直到页面关闭。数据是包含用于标记地图的地理位置的 json,它必须在 javascript 变量中,这里是 json 格式:

{max data: 30; data: [{"lat":-6.92015,"lon":107.67024,"value":0.1},...]}

我一直在研究 AJAX,但没有成功。这是我当前的代码:

get_query.php

<?php
require_once('./db_connect.php');
$dbcon=new db;

$query="SELECT geo_lat, geo_long FROM location WHEN created_at >= NOW()";

$result = mysqli_query($dbcon, $query);
$data= array(); 

while($row= mysqli_fetch_assoc($result)){
    $data[] = array("lat"=>(float)$row["geo_lat"], "lon"=>(float)$row["geo_long"], "value"=>0.1);
}

echo json_encode($data);
?>

数据.js

var data = new array();

$(function() {
setInterval(function() {
    $.ajax({
        type: "GET",
        url: "/absolute/path/of/get_query.php",
        dataType: "json",
        data: $(this).serialize(),
        success: function(response) {
           data = response;
       }
    });
}, 1000);
});

我的问题:1.用户打开页面后如何连续运行我的php代码?2. ajax如何在不删除之前数据的情况下连续从php中获取数据?3. 用户关闭页面清空mysql中的记录时可能会得到事件吗?

谢谢

4

1 回答 1

0

对于 1 和 2,您需要使用轮询。检查这个例子:如何实现基本的“长轮询”?

对于 3,你可以使用这个:

window.onbeforeunload = function() {
    $.ajax({
       type: 'POST',
       async: false, //Important
       url: 'function.php', //Here goes the function that deletes rows
       data: {param: param} //Here the params, if needed
    });
 };

我认为应该可以解决这个问题!

于 2013-05-27T23:40:36.337 回答