使用ajax将内容加载到我的infowindow的最好方法是什么?
现在我得到一个类似的效果使用iframe,但我不是那么高兴。
我认为这将是直接的,但它令我困惑的某些原因。
这就是它现在的工作方式:
现在我得到一个类似的效果使用iframe,但我不是那么高兴。
我认为这将是直接的,但它令我困惑的某些原因。
这就是它现在的工作方式:
var markers = []; var infowindow = new google.maps.InfoWindow(); $.each(JSON.parse(aulas),function(i,a){ var latlng = new google.maps.LatLng(a.aula.lat,a.aula.lng); var marker = new google.maps.Marker({ position : latlng,title: a.aula.title }); google.maps.event.addListener(marker,'click',function() { infowindow.close(); infowindow.setContent("<div class='infowindow_content'><iframe src='aulas/show/" + a.aula.id + "'></iframe</div>"); infowindow.open(map,marker); }); markers.push(marker); });
这很容易通过ajax在infowindow.setContent调用之前获取内容,但是我只想在infowindow打开时调用ajax调用。有什么想法吗?
BTW:我使用jQuery。
正如答案中所建议的,我决定将调用移动到setContent并打开一个单独的函数。对于那些感兴趣的代码,解决这是:
function load_content(marker,id){ $.ajax({ url: 'aulas/show/' + id,success: function(data){ infowindow.setContent(data); infowindow.open(map,marker); } }); }
然后更改侦听器:
google.maps.event.addListener(marker,function() { infowindow.close(); load_content(marker,a.aula.id); }); markers.push(marker); });