私は現在、リアルタイムで更新されるデータベースから値を返すスクリプトを作成しようとしているajaxで遊んでいます。
HTML
<!doctype html>
<html lang="en-gb">
<head>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
$(document).ready(function() {
liveReload('#ajax');
});
</script>
<meta charset="utf-8">
</head>
<body>
<section id="ajax">0</section>
</body>
</html>
PHP
<?php
class Ajax
{
public static function grab()
{
try
{
$db = new PDO('mysql:host=localhost;dbname=ajax', 'root', null);
$rq = $db->query('select setting, value from test');
return $rq->fetchAll(PDO::FETCH_ASSOC)[0];
}
catch (PDOException $e)
{
echo $e->getMessage();
}
}
}
echo json_encode(Ajax::grab());
JQUERY
(function() {
liveReload = function(element) {
$.ajax({
url: 'ajax.php',
dataType: 'json',
cache: false,
success: function(data)
{
$(element).html(data['value']);
setTimeout(liveReload, 1000);
}
})
}
})(jQuery);
問題は、関数が更新時に新しい値を返すにもかかわらず、この値がページで1回だけ更新されることです。