¿Cuál es la mejor manera de cargar contenido en mi ventana de información usando ajax? Ahora mismo estoy obteniendo un efecto similar usando iframes, pero no estoy tan feliz con eso. Pensé que esto sería sencillo pero me confunde por alguna razón. Esto es como su funcionamiento en este momento:Google Maps V3: cargando contenido de infowindow a través de AJAX
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);
});
Sería fácil de agarrar el contenido a través de AJAX justo antes de la llamada infowindow.setContent, pero quiero hacer la llamada ajax sólo cuando la ventana de información se abre. ¿Alguna idea?
BTW: Estoy usando jQuery.
Como se sugirió en la respuesta, decidí mover las llamadas a setContent y abrir una función separada. Para los interesados el código que resuelve esto era:
function load_content(marker, id){
$.ajax({
url: 'aulas/show/' + id,
success: function(data){
infowindow.setContent(data);
infowindow.open(map, marker);
}
});
}
a continuación, cambiar el oyente:
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
load_content(marker, a.aula.id);
});
markers.push(marker);
});
Avíseme si necesito aclarar algo en mi respuesta :) – RedBlueThing
No, eso fue perfecto. Mi pensamiento se había vuelto confuso y solo necesitaba un suave empujón en la dirección correcta. ¡Gracias! – mikewilliamson
no hay problema :) Me alegro de que haya ayudado. – RedBlueThing