jquery – Google地图V3:通过AJAX加载infowindow内容

前端之家收集整理的这篇文章主要介绍了jquery – Google地图V3:通过AJAX加载infowindow内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用ajax将内容加载到我的infowindow的最好方法是什么?
现在我得到一个类似的效果使用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);
  });
@H_502_19@

解决方法

您可以在信息窗口显示后的任何时间调用infowindow.setContent。因此,您可以初始使用微调器设置您的信息窗口内容,进行AJAX调用(从事件处理程序),然后再次使用适当的数据从AJAX响应调用infowindow.setContent。 @H_502_19@ @H_502_19@

猜你在找的jQuery相关文章