Problème ajax

Fermé
rorita - 10 juil. 2014 à 11:01
 rorita - 10 juil. 2014 à 15:10
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);
}

else if(etage_selectionne=="1"){
destination="escalier_10";
etage_selectionne='0';
affichge_plan_image_2();
}
}

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);

}

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
10 juil. 2014 à 11:30
Salut,

Nous n'avons pas le code où tu mets à jour le tableau tab_poi_final, donc difficile de savoir pourquoi il n'est pas modifié.
0
c'est dans la fonction reception_liste_poi() dont voici le code:
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
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
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(','));
} 
0
Merci mais je l'ai modifié et ça n'a rien changé :/
0