我正在使用Google地图API来显示表单提交到我网站的最后位置。所以我将php文件中的lon和lat值作为变量拉出来,但我需要脚本每5秒刷新一次,这样地图标记就会更新,而不会重新加载页面。
以下是google api脚本:
<script>
function initialize() {
var myLatlng = new google.maps.LatLng<?php
require($DOCUMENT_ROOT . "php_includes/mobile_loc.php");
?>;
var mapOptions = {
zoom: 15,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Last Scan'
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
这是php文件:
<?php
include_once("php_includes/db_conx.php");
$sql = "SELECT * FROM patdub ORDER BY STR_TO_DATE(Timestamp, '%d/%m/%Y %H:%i:%s') DESC LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$row = mysqli_fetch_array($query);
$lon = $row['Lon'];
$lat = $row['Lat'];
echo "($lat, $lon)";
?>
有什么想法吗?我尝试过不同的AJAX方法,但似乎无法弄明白!
编辑:下面的代码行基本上是我需要每5秒刷新一次,但没有任何div标签或任何东西,因为这会干扰google api脚本..
<?php require($DOCUMENT_ROOT . "php_includes/mobile_loc.php"); ?>;
答案 0 :(得分:0)
您想要调用加载PHP脚本所在的文件,假设它在自己的文件中,您可以这样做,然后您可以使用AJAX调用的返回来更新您的DOM。 你可以在一个javascript循环中包装AJAX调用,例如setInterval(),如下所示:
setInterval(function() {
$.ajax({
url: "php_script.php"
}).done(function(return) {
console.log(return);
});
, 5000);
每5秒钟调用一次。
使用您的Google功能来包含它(我不了解谷歌地图,所以这可能不是100%准确):
<script>
function initialize(myLatlng) {
myLatlng = myLatlng || new google.maps.LatLng<?php require($DOCUMENT_ROOT . "php_includes/mobile_loc.php");?>;
var mapOptions = {
zoom: 15,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Last Scan'
});
}
google.maps.event.addDomListener(window, 'load', initialize);
setInterval(function() {
$.ajax(function() {
url: 'php_script.php'
}.done(function(response) {
var latlong = response;
initialize(latLong)
});
}, 5000)
</script>