$ J'ai un problème avec la demande asynchrone .ajax de $. Je suis en train de télécharger des données JSON de restaurant-location.php
et charger les données dans un tableau locations
. Ensuite, j'ai besoin d'itérer à travers ce tableau à l'intérieur de la fonction initMap
. Lorsque j'imprime le tableau locations
dans la console, j'obtiens le résultat undefined
. Je suppose que le problème est avec une fonction de rappel, mais je ne peux pas le comprendre. Toute aide serait grandement appréciée!téléchargement asynchrone et rappellerons .ajax
var locations = [];
window.onload = function downloadLocations() {
$.ajax({
type: "GET",
url: '/restaurant-locations.php',
success: function(data) {
console.log(locations); //will print out the location array
initMap(data)
},
});
}
console.log(locations); //will NOT print out the location array
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(10,-10),
zoom: 15
for (var i = 0; i < locations.length; i++) {
var street = locations[i].street;
var city= locations[i].city;
more code ....
}
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=MYAPIKEY&v=3&callback=initMap">
</script>
C'est becase fonction de la réussite n'est pas appelé jusqu'à ce que ajax est fait exécuter d'autre part, la fonction console.log après onLoad est appelé tout de suite. D'ici là, les emplacements n'ont pas de valeur! – Gacci
ajax est ** asynchrone **. Ne peut pas manger une pizza avant qu'il ne soit livré – charlietfl