我有一个保存了坐标的MySQL数据库。我想使用java-script和php在Google地图上显示它们。我基本上要做的就是每 3 秒从数据库中提取最后一行,并更新我在地图上的标记位置。
我遇到的问题是,当我在java脚本中调用我的php函数时,它只在页面加载时被调用一次。之后,它不会调用它,并且不会显示添加到数据库中的后续值。
如何定期将数据库的最后一行获取到我的 java 脚本?
编辑:以下代码仅更新一次div,函数每秒调用一次,但 php 函数返回的值始终相同。
<html>
<?php
$con=mysqli_connect("localhost","*****","*****","gps");
function getLast(){
$sql = "
SELECT longitude
, latitude
FROM gpstable
ORDER
BY id DESC
LIMIT 1;
";
$result = mysqli_query($GLOBALS['con'],$sql);
$row = mysqli_fetch_row($result);
$longi=$row[0];
$lati = $row[1];
return $longi .','. $lati;
}
?>
<script>
var t =setInterval(function(){changeDivContent()},1000);
function changeDivContent(){
var phpadd= <?php echo getLast(); ?>;
document.getElementById("content").innerHTML = phpadd;
}
</script>
<body>
<div id="content">ABC</div>
</body>
</html>
你可以使用 JavaScript 函数:
setInterval(function() {
/* ajax code to get the last coodinate */
}, 3000);
编辑:您编辑了您的问题。每次调用 changeDivContent() 函数时,相同的值都会进入 "phpadd"。
每次要在 PHP 中执行查询时,都必须连接到数据库。
也许你可以创建一个PHP文件,它返回最后一个坐标(任何格式,如JSON或HTML)。在主文件中,您使用 Ajax 调用另一个文件以获取最后一个坐标。
根据Moob的评论,setTimeout更好:
function myFunction()
{
/* code here */
setTimeout(myFunction, 3000);
}
myFunction();
你可以用JQuery做什么的例子(在JavaScript中不知道):
<?php
// getCoordinatesAjax.php
$con = mysqli_connect("localhost","*****","*****","gps");
$sql = "SELECT longitude, latitude FROM gpstable ORDER BY id DESCLIMIT 1";
$result = mysqli_query($GLOBALS['con'],$sql);
$row = mysqli_fetch_row($result);
echo $row[0] .','. $row[1];
<!-- main.php -->
<script>
function myFunction()
{
$.ajax({
url: "getCoordinatesAjax.php"
})
.done(function(html) {
$("#content").append(html);
});
setTimeout(myFunction, 3000);
}
myFunction();
</script>