Le code ne fonctionnait pas à cause d'une requête asynchrone et d'un problème de portée variable. Je ne peux pas comprendre comment résoudre cela. Passer à la méthode $ .ajax avec async: false - pas une option. Je sais à propos des fermetures, mais comment je peux l'implémenter ici - je ne sais pas. J'ai vu tous les sujets ici sur les fermetures dans js et les problèmes d'async jQuery - mais toujours rien. Aidez-moi, s'il vous plaît. Voici le code:Requête jQuery async ajax et problème de retour (portée, fermeture)
var map = null;
var marker;
var cluster = null;
function refreshMap()
{
var markers = [];
var markerImage = new google.maps.MarkerImage('/images/image-1_32_t.png', new google.maps.Size(32, 32));
$.get('/get_users.php',{},function(data){
if(data.status == 'error')
return false;
var users = data.users; // here users.length = 1 - this is ok;
for(var i in users)
{
//here I have every values from users - ok
var latLng = new google.maps.LatLng(users[i].lat, users[i].lng);
var mark = new google.maps.Marker({
position: latLng,
icon: markerImage
});
markers.push(mark);
alert(markers.length); // length 1
}
},'json');
alert(markers.length); // length 0
//if I have alert() above - I get result
cluster = new MarkerClusterer(map, markers,
{
maxZoom: null,
gridSize: null
});
}
Merci.
Quel est le problème? Quel comportement voulez-vous/attendez-vous? – kevingessner