【问题标题】:get mysql new record in realtime with ajax使用ajax实时获取mysql新记录
【发布时间】:2013-05-22 18:31:07
【问题描述】:

我在 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);
?>

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中的记录时可能会得到事件?

谢谢

【问题讨论】:

  • 您可以使用此显示框架来显示推文140dev注意它运行在Twitter database server自带的数据库结构上
  • 谢谢,我试过了,但是页面末尾的ajax按钮不起作用,我会努力解决的。

标签: php jquery mysql ajax twitter


【解决方案1】:

对于 1 和 2,您需要使用轮询。检查这个例子:How do I implement basic "Long Polling"?

对于 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
    });
 };

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

【讨论】:

  • 谢谢,看来需要努力学习。顺便说一句,我测试了将上面带有document.getElementById("id").innerHTML=data; 的js 变量打印到html div id 中,但没有出现,尽管我的php 代码工作正常。我的 json 数据格式是[{"lat":-6.92015,"lon":107.67024,"value":0.1},...],有什么建议吗?
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多