WRInaute occasionnel
Salut,
J'ai un souci technique que je n'arrive pas à résoudre.
Voici les explications.
Je bosse sur un projet de site sur lequel je référence différents établissements touristiques. Pour chacun, je créé une fiche détaillée avec navigation par onglets (tarifs, description, accès...) générés à partir d'une BDD mySQL.
La navagation entre les onglets une fois la fiche chargée se fait en Ajax.
Sur l'onglet pas défaut, chargé avec la page, j'affiche une mini map pour localiser l'établissement.
Tout va bien sauf que lorsque je vais sur un autre onglet et que je reviens sur celui par défaut, la map ne s'affiche pas.
Cela oblige à recharger la page pour voir de nouveau apparaître la Map.
J'ai la page de présentation d'un camping avec la map, puis d'autres onglets avec le contenu appelé via ajax.
La structure est la suivante :
Appel mySQL dans la table onglets avec php pour générer les onglets.
Appel d'un fichier javascript avec ajax qui appelle un contenu différent selon l'ID de l'onglet. Ce fichier s'appelle présentation.php, c'est le même qui est inclus lors du chargement de la page principale.
Tout le code Gmap se trouve à l'intérieur de présentation.php, et il n'y a aucune raison que la map ne se charge pas.
Il me semble que le code javascript n'est pas interprêté lors d'un appel d'une page via ajax, mais je ne suis pas sur et je ne sais pas comment contourner le problème.
Voici le contenu du fichier javascript pour info :
Voici le code de google map en flash placé dans le fichier google_map_mini.php :
La page var url="../include/fonctions/requete.php?page="+ID+"&camp="+camp+"&lang="+lang requete.php appelle simplement le fichier suivant en fonction de l'ID de l'onglet.
Voici le code d'affichage du contenu de la page qui contient l'onglet :
Si quelqu'un peut m'aider, ce serait sympa, parce que ça fait un moment que je sèche la dessus.
A+
J'ai un souci technique que je n'arrive pas à résoudre.
Voici les explications.
Je bosse sur un projet de site sur lequel je référence différents établissements touristiques. Pour chacun, je créé une fiche détaillée avec navigation par onglets (tarifs, description, accès...) générés à partir d'une BDD mySQL.
La navagation entre les onglets une fois la fiche chargée se fait en Ajax.
Sur l'onglet pas défaut, chargé avec la page, j'affiche une mini map pour localiser l'établissement.
Tout va bien sauf que lorsque je vais sur un autre onglet et que je reviens sur celui par défaut, la map ne s'affiche pas.
Cela oblige à recharger la page pour voir de nouveau apparaître la Map.
J'ai la page de présentation d'un camping avec la map, puis d'autres onglets avec le contenu appelé via ajax.
La structure est la suivante :
Appel mySQL dans la table onglets avec php pour générer les onglets.
Appel d'un fichier javascript avec ajax qui appelle un contenu différent selon l'ID de l'onglet. Ce fichier s'appelle présentation.php, c'est le même qui est inclus lors du chargement de la page principale.
Tout le code Gmap se trouve à l'intérieur de présentation.php, et il n'y a aucune raison que la map ne se charge pas.
Il me semble que le code javascript n'est pas interprêté lors d'un appel d'une page via ajax, mais je ne suis pas sur et je ne sais pas comment contourner le problème.
Voici le contenu du fichier javascript pour info :
Code:
function creeXHR() //fonction qui va crée une instance pour les requete XML
{
var request = false;
if (window.XMLHttpRequest) //vérifie les différent navigateur
{
request = new XMLHttpRequest();//pour FireFox,Opéra
if (request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{
try
{ // essaie de charger l'objet pour IE
request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{ // essaie de charger l'objet pour une autre version IE
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
window.alert("Veuillez mettre a jour votre navigateur pour la navigation sur ce site");
window.close;
}
}
}
if (!request) {//si la création de l'instance echoue une fenêtre vous annoncera qu'il ne pourra executer le script
alert('Abandon,impossible de créer une instance XMLHTTP');
return false;
}
return request;
}
function onglet(ID, camp, lang)//fonction qui va gérer le contenu dans le div en récuperant les données
{
var xhr=creeXHR();//création de l'instance
var url="../include/fonctions/requete.php?page="+ID+"&camp="+camp+"&lang="+lang;//ID va servir a la page requete pour chercher le contenu apartenant a l'ID en fonction de la clef primaire du camping et de la lang de navigation
xhr.open( "GET",url, true);//ouverture du fichier
xhr.onreadystatechange=function(){
if(xhr.readyState == 4)//une fois les données charger
{
if (xhr.status == 200)//qu'il n'y a pas d'erreur
{
var doc2=xhr.responseText;
document.getElementById("contenu").innerHTML=doc2;//envoi les donnees dans le div avec l'ID 'contenu'
}
for (i=0;i<compteur;i++)//la variable compteur qui a été initialiser au debut de la page onglet.php qui indique le nombre d'onglet
{
if (tabu[i]==ID)//change la classe de l'onglet actif
{
document.getElementById(tabu[i]).className="active";
}
if (tabu[i]!=ID)//change la classe de l'onglet en innactif
{
document.getElementById(tabu[i]).className="eteint";
}
}
}
};
xhr.send("");//envoi des donnée au script requete.php (ici NULL)
}
Voici le code de google map en flash placé dans le fichier google_map_mini.php :
Code:
<script src="http://maps.google.com/maps?file=api&v=2&key=<?php print ( $google_map_key ); ?>"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_mini"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var center = new GLatLng(<?php print ( $data['gps_lat'] ); ?>, <?php print ( $data['gps_long'] ); ?>);
map.setCenter(center, 5);
var marker = new GMarker(center, {draggable: false});
GEvent.addListener(marker, "dragstart", function() {
map.closeInfoWindow();
});
GEvent.addListener(marker, "dragend", function() {
marker.openInfoWindowHtml("Just bouncing along...");
});
map.addOverlay(marker);
}
}
//]]>
</script>
<script type="text/javascript">
window.onload= load;
</script>
La page var url="../include/fonctions/requete.php?page="+ID+"&camp="+camp+"&lang="+lang requete.php appelle simplement le fichier suivant en fonction de l'ID de l'onglet.
Voici le code d'affichage du contenu de la page qui contient l'onglet :
Code:
<div class="presentation_fiche">
<div class="description_fiche">
<?php
//--On teste si présence de coordonnées GPS pour affichage mini map
if ( $data['gps_lat'] != "" AND $data['gps_long'] != "" ) {
include_once(__RACINE__.'include/include/map/google_map_mini.php');
$map = "<div id='map_mini'></div><div class='map_mini_ombre'></div>";
}
else {
$map = "<div class='absence_gps'>" . strtr ( $lang_absence_gps, $ascii ) . "</div>";
}
print("<h2>".stripslashes( ucfirst ( $data['nom_camp'] ) ) //--Affichage nom / nbre d'étoiles
. "</h2>" . " ".etoiles_big( $data['nbre_star'] ) );
[...]
?>
</div>
<div class="description_fiche_ombre"></div>
</div>
<div class="photo_fiche">
<?php echo $map ?>
<div class="photo_fiche_img">
[....]
Si quelqu'un peut m'aider, ce serait sympa, parce que ça fait un moment que je sèche la dessus.
A+