我有一个PHP函数,它从我的数据库中获取所有“标记”,这些标记被加载到谷歌地图上。
我在同一页面上也有一个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>
答案 0 :(得分:1)
corse PHP确实有这样的功能,但你需要以这样的方式改变代码:
1。在php中创建某个地方
JARFILE=<%= @war_path %>
LOG_FOLDER=<%= @logging_directory %>
RUN_ARGS="--server.port=<%= @port %> <%= @boot_opts %>"
JAVA_OPTS="<%= @java_opts %>"
LOG_FILENAME=spring.log
2。在java脚本中,将init代码包装成函数
public function getMarkersJSON(){
$markerArray = getMarkers();
$allMarkers = array();
foreach($markerArray as $value){
$allMarkers[] = array_pop($markerArray)['json'];
}
return json_encode($allMarkers, JSON_UNESCAPED_SLASHES);
}
3。接下来在文档就绪
上调用此函数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
});
}
4。现在发布位置后,向服务器端的某个东西发出ajax请求,返回函数getMarkersJSON()的结果。然后使用response调用你的JS函数initMap()。
$(function(){
initMap(allMarkers);
});
这是你的问题的答案,蝙蝠和我一样,你不需要这样的东西。
你已经把你的观点发布到服务器了,你不必担心重装时会丢失数据。因此,您无需更新服务器上的所有地图点,只需添加新的地图点,或使用您在客户端已有的数据刷新孔地图。在您制作完成后,AJAX发布了最近发布数据的客户端地图更新。只需将发送的位置添加到地图中,或者根据需要将其删除,具体取决于客户端的操作。