我的帖子()的结果只显示其他map.php生成的数据,但无法显示地图框。我通过post()发送id,它显示来自mysql数据库的确切php数据。只有地图div是emptry。以下是代码。
$(document).ready(function() {
$(".mylink").click(function(){
var $linkattr = $(this).attr("rel");
// alert($linkattr);
$.post("map.php", {myid:$linkattr}).done(function(data) {
$("#mapcomeshere").html(data);
evt.preventDefault();
});
});
});
我的map.php脚本是
<?php
include('db.php');
$myid = "25";//$_POST['myid'];
$result = mysql_query("select * from property Where Id = '" . $myid ."' AND status = 1");
$row = mysql_fetch_array($result);
echo $row['Id'] . " : " . $row['owner'] . " : " . $row['lnglat'] . $row['propertyadd'] ."<br>";
$maploc = $row['lnglat'];
$myadd = $row['propertyadd'];
?>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
google.maps.event.addDomListener(window, 'load', function() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 13,
center: new google.maps.LatLng(24.893379,67.028061),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infoWindow = new google.maps.InfoWindow;
var onMarkerClick = function() {
var marker = this;
var latLng = marker.getPosition();
infoWindow.setContent('<?php echo $myadd ?>');
infoWindow.open(map, marker);
};
google.maps.event.addListener(map, 'click', function() {
infoWindow.close();
});
var marker1 = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(<?php echo $maploc ?>)
});
google.maps.event.addListener(marker1, 'click', onMarkerClick);
});
</script>
hi
<div id="map"></div>
请帮助
答案 0 :(得分:1)
我可以提出一些建议。
首先,您在代码中遇到了一个概念性问题:
infoWindow.setContent('<?php echo $myadd ?>');
您需要了解PHP是在服务器上处理的,因此,它不能以这种方式直接由JavaScript执行。这样做,实际上是将infoWindow的内容更改为'&lt;?php echo $ myadd?&gt;'。
至于你的问题,我认为你通过AJAX响应返回所有代码是错误的。 JavaScript应该存在于页面中,并且map.php应该只返回数据,可能以JSON数据的形式返回,例如:
map.php:
// ... database stuff, then finally:
echo json_encode(array(
'map' => array(
'lat' => 67.028061,
'long' => 24.893379,
'zoom' => 13
),
'infoWindowContent' => $myadd,
//... etc
));
该JavaScript的其余部分属于$ .post()的回调。
$.post("map.php", {myid:$linkattr}).done(function(data) {
// Not this: $("#mapcomeshere").html(data);
google.maps.event.addDomListener(window, 'load', function() {
var map = new google.maps.Map(document.getElementById('map'), data.map);
// ... setup event handlers, etc ...
});
});
这样做可以为您的代码提供更清晰的API。 map.php的职责只是为地图而不是JavaScript提供数据。 JavaScript就在一个地方。