我在PHP中有一个函数,该函数从数据库中获取所有“标记”,这些标记已加载到Google地图上。
我在同一页面上也有一个AJAX表单,该表单允许用户向数据库中添加更多“标记”。
我希望这样,以便在提交AJAX表单时,标记会立即显示在地图上。
目前的问题是,PHP仅在页面加载时呈现一次,因此,如果我想查看更新的标记,则必须手动重新加载页面。
是否可以分配给AJAX提交按钮的功能来刷新页面中的PHP?
<?php $markerArray = getMarkers();
$allMarkers = array();
for($x=0; $x<sizeof($markerArray); $x++)
{
array_push($allMarkers,$markerArray[$x]['json']);
}
$allMarkersJson = json_encode($allMarkers, JSON_UNESCAPED_SLASHES); ?>
<script>
var allMarkers = <?php echo $allMarkersJson ?>;
var markerMap = allMarkers.map(function(e) {
return JSON.parse(e);
});
for(x=0;x<markerMap.length;x++){
var thisMarker = markerMap[x];
var marker = new google.maps.Marker({
position: thisMarker.geometry.location,
title:"this is marker " + x
});
$("#saveToDatabase").click(function(){
var bounds = new google.maps.LatLngBounds();
var place = searchBox.getPlaces();
var locationJson = JSON.stringify(place[0]);
$.ajax({
type: "POST",
url: "insertLocation.php",
dataType:"json",
data: {
locationJson : locationJson
},
cache: false,
success: function(result){
window.alert("successful upload!");
}});
});
</script>
当然,PHP确实具有这样的功能,但是您需要以这种方式稍微更改代码:
1.在php中创建某个位置
public function getMarkersJSON(){
$markerArray = getMarkers();
$allMarkers = array();
foreach($markerArray as $value){
$allMarkers[] = array_pop($markerArray)['json'];
}
return json_encode($allMarkers, JSON_UNESCAPED_SLASHES);
}
2.在Java脚本部分中,将您的初始化代码包装为函数
var allMarkers = <?= getMarkersJSON() ?>;
function initMap(allMarkers){
var markerMap = allMarkers.map(function(e) {
return JSON.parse(e);
});
for(x=0;x<markerMap.length;x++){
var thisMarker = markerMap[x];
var marker = new google.maps.Marker({
position: thisMarker.geometry.location,
title:"this is marker " + x
});
}
3.接下来在准备好文档时调用此函数
$(function(){
initMap(allMarkers);
});
4.现在,在发布位置之后,向服务器端的某个内容发出ajax请求,该请求返回函数getMarkersJSON()的结果。然后调用带有响应的JS函数initMap()。
initMap([...your respose...])
这是您问题的答案,就像我一样,您不需要这些东西。
您已经将点发布到服务器上,无需担心重新加载时丢失数据。因此,您无需从服务器更新所有地图点,而只需添加一个新地图点,或使用客户端上已有的数据刷新孔地图。在您完成AJAX发布后,使用最近发布的数据更新客户端地图。只需将发送的位置添加到您的地图,或者根据需要将其删除(取决于客户端的操作)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句