Quelle est la meilleure façon de charger du contenu dans ma fenêtre d'information en utilisant Ajax ? Pour l'instant, j'obtiens un effet similaire en utilisant des iframes, mais je n'en suis pas si satisfait. Je pensais que ce serait simple, mais je ne comprends pas pourquoi. Voici comment cela fonctionne actuellement :
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);
});
Il serait facile de récupérer le contenu par ajax juste avant l'appel infowindow.setContent, mais je veux que l'appel ajax ne soit effectué qu'à l'ouverture de l'infowindow. Avez-vous des idées ?
BTW : J'utilise jQuery.
Comme il a été suggéré dans la réponse, j'ai décidé de déplacer les appels à setContent et open vers une fonction distincte. Pour ceux qui sont intéressés, le code qui a résolu ce problème est le suivant :
function load_content(marker, id){
$.ajax({
url: 'aulas/show/' + id,
success: function(data){
infowindow.setContent(data);
infowindow.open(map, marker);
}
});
}
Alors changez l'auditeur :
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
load_content(marker, a.aula.id);
});
markers.push(marker);
});
0 votes
Faites-moi savoir si je dois clarifier quelque chose dans ma réponse :)
1 votes
Non, c'était parfait. Ma pensée s'était embrouillée et j'avais juste besoin d'un petit coup de pouce dans la bonne direction. Merci !
0 votes
Pas de problème :) Content que ça ait aidé.