【发布时间】:2015-04-04 17:15:42
【问题描述】:
我正在以 XML 格式从数据库加载标记并使用 for() 循环将其分解,但我有一个 addListener 事件“单击”,其中包含我遇到问题的 AJAX 调用。我正在尝试使用在 ajax 调用中下拉的数据填充 infoWindow 的内容。
这是我在 for() 循环中的代码副本:
var mkID = mk[i].getAttribute("id");
marker = new google.maps.Marker({
position: point,
map: map,
icon: "/img/icon.png",
title: "Click to Show"
});
infoWindow = new google.maps.InfoWindow({
content: "<i class='fa fa-spinner fa-spin fa-lg' style='color: #FFA46B;' title='Loading...'></i> Loading..."
});
markerArray.push(marker);
google.maps.event.addListener(marker, 'click', (function(marker, infoWindow, mkID) {
return function() {
if(infoWindow) {
infoWindow.close();
}
infoWindow.open(map, marker);
$.ajax({
url: '/map-info-ajax.html?id=' + mkID,
success: function(data) {
infoWindow.setContent(data);
}
});
};
})(marker, infoWindow, mkID));
我尝试改变这个:
infoWindow = new google.maps.InfoWindow({
content: "<i class='fa fa-spinner fa-spin fa-lg' style='color: #FFA46B;' title='Loading...'></i> Loading..."
});
仅此:
infoWindow = new google.maps.InfoWindow();
但是当 data 确实包含“xyzzy ya ya ya”时,信息窗口现在只是空白。谁能看到我在这里做错了什么?
问候, 文斯
【问题讨论】:
-
请提供一个Minimal, Complete, Tested and Readable example 来证明该问题。这实际上是 this example from the documentation for the Places API 在请求地点详细信息时所做的。
-
为什么不首先加载信息窗口内容和标记?
-
@MrUpsidown 当我建立一个网站时,我总是试图想象它每天至少会收到 1,000,000 次点击,并且它们都将通过手机获得。因此,我尽我所能减少所需的 PHP、MySQL、HTML、CSS 和 JavaScript 解析时间/带宽。此外,事后通过 AJAX 拉下信息窗口内容是 Google Map API 开发人员在这里非常合乎逻辑和普遍的要求。我唯一的问题是,到目前为止,我无法获得任何解决方案来访问通过 AJAX 下拉的“数据”以在我的代码中工作。我需要新鲜的眼睛。
-
你调试了吗? ajax 请求有效吗?你仔细检查了网址吗?成功回调中是否返回任何内容?如果是,它看起来像什么?帮助我们为您提供帮助。
-
顺便说明一下,我会设置内容并然后打开信息窗口,而不是相反。
标签: jquery ajax google-maps-api-3 infowindow