bonjour tout le monde,
J'ai un problème dans mon code javascript de modification d'une valeur globale à travers des appels ajax.
en effet, j'ai un tableau global que j'ai nommé "tab_poi_final".
Ce tableau doit avoir différentes valeur selon les paramètres envoyés dans la requête ajax.
au début, je charge une image et j'affiche les point qui existe dans le tableau (tab_poi_final) selon le paramètre étage.
Mon problème est qu'en effectuant le premier appel ajax , il prend les bonnes valeurs et les affiche sur la première image, après quand je change le numéro de l'étage et que je dois afficher une nouvelle image avec de nouveau coordonnées je fais un nouvel appel ajax avec la même méthode sauf que je remarque que la requête a été bien exécutée (dans l'onglet network de l'inspection de la console) et reccupère les bonnes valeurs des coordonnées demandés sauf que le contenu du tableau tab_poi_final ne change pas dans mon code et par suite il est impossible d'afficher les nouveaux points sur la nouvelle image.
Je n'arrive pas à comprendre quel est l'origine du problème! Quelqu'un peut m'aider ?
Je vous remercie infiniment.
Voici mon code:
c'est la fonction qui effectue la modification sur la nouvelle image svg affichée
function affichage_chemin_etage0_choisi(depart,destination){
var abscisse1,ordonnee1, abscisse,ordonnee,marker,pin;
etage_selectionne='1';
console.log(tab_poi_final);
reception_liste_poi(); //c'est la fonction qui effectue l'appel ajax
console.log("coucou");
console.log(tab_poi_final);
abscisse=retourner_position_x_voisin(depart,tab_poi_final);
console.log("abscisse"+abscisse);
ordonnee=retourner_position_y_voisin(depart,tab_poi_final);
pin= s2.image("../img/pin_debut.svg", abscisse-15, ordonnee-30, 17, 30);
abscisse1=retourner_position_x_voisin(destination,tab_poi_final);
ordonnee1=retourner_position_y_voisin(destination,tab_poi_final);
marker= s2.image("../img/marker.svg", abscisse1-9, ordonnee1-30, 15, 30);
reception_liste_voisin();
//tab_voisin_final: tableau de tous lesvoisins des POIs dans la base
console.log(tab_voisin);
for(var i=0;i<tab_voisin.length-1;i++){
element=tab_voisin[i].split(',');
element.pop();
tab_voisin_final.push(element);
}
console.log("tab_voisin_final"+tab_voisin_final);
// calcul et affichage de l'itineraire
map= mappage (tab_poi_final,tab_voisin_final);
tableau_court_chemin=Dijkstra(map);
traçage_chemin_snap(tableau_court_chemin,tab_poi_final);
}
c'est la fonction principale:
function afficher_itineraire(){
var abscisse1,ordonnee1,marker,element;
destination=document.getElementById("nom_destination").value;
var destination_finale=destination;
//var b= rechercher_element(destination,tab_poi_final);
if(rechercher_element(destination,tab_poi_final)!= true){
reception_liste_voisin();
if(etage_selectionne=="0"){
destination="escalier_01";
etage_selectionne='1';
affichge_plan_image_2();
affichage_chemin_etage0_choisi("escalier_10",destination_finale);
}
abscisse1=retourner_position_x_voisin(destination,tab_poi_final);
ordonnee1=retourner_position_y_voisin(destination,tab_poi_final);
console.log(destination);
marker= s.image("../img/marker.svg", abscisse1-9, ordonnee1-30, 15, 30);
//tab_voisin_final: tableau de tous lesvoisins des POIs dans la base
for(var i=0;i<tab_voisin.length-1;i++){
element=tab_voisin[i].split(',');
element.pop();
tab_voisin_final.push(element);
}
console.log(tab_voisin_final);
// calcul et affichage de l'itineraire
map= mappage (tab_poi_final,tab_voisin_final);
tableau_court_chemin=Dijkstra(map);
traçage_chemin_snap(tableau_court_chemin,tab_poi_final);
Et pour la mettre à jour je l'appelle dans les autres fonctions postées précédemment
Pitet
Messages postés2826Date d'inscriptionlundi 11 février 2013StatutMembreDernière intervention21 juillet 2022525 10 juil. 2014 à 12:41
Il faudrait peut être réinitialiser le tableau tab_poi_final avant d'y insérer les nouveaux points ?
//tab_poi_final: tableau de tous les POIs dans la base
tab_poi_final = new Array;
for(var i=0;i<tab_poi.length-1;i++){
tab_poi_final.push(tab_poi[i].split(','));
}
10 juil. 2014 à 12:03
function reception_liste_poi(){
var xmlhttp5;
if (window.XMLHttpRequest){
xmlhttp5=new XMLHttpRequest();
}
else
{
xmlhttp5=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp5.onreadystatechange=function(){
if (xmlhttp5.readyState==4 && xmlhttp5.status==200){
reponse=xmlhttp5.responseText;
tab_poi=reponse.split(']');
}
//tab_poi_final: tableau de tous les POIs dans la base
for(var i=0;i<tab_poi.length-1;i++){
tab_poi_final.push(tab_poi[i].split(','));
}
}
xmlhttp5.getAllResponseHeaders();
xmlhttp5.open("POST","http://www.closycom.com/roua/dossier_client/php/liste_poi_voisin_pour_map.php",true);
xmlhttp5.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp5.send("etage_selectionne="+etage_selectionne+"&lieu_selectionne="+lieu_selectionne);
}
Et pour la mettre à jour je l'appelle dans les autres fonctions postées précédemment
10 juil. 2014 à 12:41
10 juil. 2014 à 15:10