IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] document XML


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 18
    Points : 17
    Points
    17
    Par défaut [AJAX] document XML
    Bonjour,
    je suis nouveau ici et merci pour ce forum quant aux nombreuses informations qu'il contient.

    Je développe actuellement sur une interface Google Maps pour un affichage des refuges dans les Pyrénées. Sur le serveur de développement, il n'y a pas de problèmes, l'affichage de mes cabanes se passent normalement. Par contre, dès que je passe le site sur le serveur de développement mon fichier XML renvoyé est considéré comme vide.
    Voici ici la version de développement : http://dev.apem.asso.fr/google_maps/ajax.html
    et ici la version sur le serveur de prod : http://www.pyrenees-refuges.com/goog...ogle_maps.html

    Pourtant le fichier XML a l'air bien formé et est renvoyé par le script PHP.

    côté client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    function getMarkers(north,south,west,east){
    		    var urlstr="./read.php?north="+north+"&south="+south+"&west="+west+"&east="+east;
    		    var request = GXmlHttp.create();
    		    request.open('GET', urlstr , true);
    		    request.onreadystatechange = function () {
    				if (request.readyState == 4) {
    					if (request.status == 200) {
    						var xmlDoc = request.responseXML;
    						locations = xmlDoc.documentElement.getElementsByTagName("location");
    						//alert(locations.length);
    						markers = [];
    						if (locations.length){
    							for (var i=0;i<locations.length;i++){
    								markers[i] = new GMarker(new GLatLng(locations[i].getAttribute("lat"),locations[i].getAttribute("lng")),{icon:G_DEFAULT_ICON});
    								markers[i].infowindow = locations[i].getAttribute("name")+"<br>"+locations[i].getAttribute("vallee")+"<br>"+locations[i].getAttribute("lat");
    								markers[i].small_infobulle = "<br><b>"+locations[i].getAttribute("name")+"</b><br>"+locations[i].getAttribute("vallee")+"<br><br>";
    								markers[i].title = locations[i].getAttribute("name");
    								markers[i].markerindex = i;
    								markers[i].db_id = locations[i].getAttribute("id");
    								map.addOverlay(markers[i]);
    							}
    						}
    					}
    				}
    			}
    			request.send(null);
    	    }
    côté serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    require ("../admin/refuge-conf.php");
     
    	$north=$_GET["north"];
    	$south=$_GET["south"];
    	$east=$_GET["east"];
    	$west=$_GET["west"];
     
    	$sql = "select gid,nom,astext(the_geom) as geom,vallee from refuges where Contains (GeometryFromText('POLYGON((".$east." ".$north.",".$west." ".$north.",".$west." ".$south.",".$east." ".$south.",".$east." ".$north."))',-1),refuges.the_geom)";
    	$res = postgres($sql);
     
    	// Date in the past
    	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
    	// always modified
    	header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    	// HTTP/1.1
    	header("Cache-Control: no-store, no-cache, must-revalidate");
    	header("Cache-Control: post-check=0, pre-check=0", false);
    	// HTTP/1.0
    	header("Pragma: no-cache");
    	//XML Header
    	header("content-type:text/xml");
     
    	echo "<locations>";
    	while ($result=pg_fetch_array($res)){
    		$latlon=substr($result["geom"],6,strlen($result["geom"])-7);
    		$coord=explode(" ",$latlon);
    		if (($coord[0]<>0)and($coord[1]<>0)){
    			echo "<location id='".$result["gid"]."' name='".$result["nom"]."' lat='".$coord[1]."' lng='".$coord[0]."' vallee='".$result["vallee"]."'/>";
    		}
    	}
    	echo "</locations>";
    J'ai lu qu'il pouvait y avoir des problèmes par rapport aux caractères accentués présents en base de données. J'ai essayé en encodant le fichier XML en utf-8 et iso, rien ne change.

    Avez-vous des pistes ?

    Fabien.

    [Edit] : c'est bien un problème d'accent, lorsque je zoome sur une zone où les cabanes n'ont pas de noms accentués, ça fonctionne.

    [Résolu] : le problème ne venait pas des accents mais des apostrophes contenus en base de données

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Points : 149
    Points
    149
    Par défaut
    Le problème doit se situer du coté de la base de donnée, est ce que l'encodage des tables est le meme en prod et en test ? Suivant la version de mysql c'est pas les memes valeurs par défaut, c'est peut etre ca.
    Cartes Pokémon, Yugioh, Magic ?
    Communauté d'échange

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par kangaxx Voir le message
    Le problème doit se situer du coté de la base de donnée, est ce que l'encodage des tables est le meme en prod et en test ? Suivant la version de mysql c'est pas les memes valeurs par défaut, c'est peut etre ca.
    C'est tout à fait ça.
    Je suis pas un pro des différents encodages des caractères accentués.
    Mais en base de données en développement mes accents sont des accents 'normaux' (utf-8 ?) et en production j'ai des trucs du style "è" (format décimal).
    Je cherche donc à transformer dans le code php les caractères décimaux en utf-8 - ou alors y'a t'il un moyen d'en l'en-tête du xml de définir l'encodage pour des caractères accentués quand ils sont en décimal ?

    Merci beaucoup.

    [Edit] : je n'utilise pas MySQL mais Postgre - parce qu'il y a une composante spatiale PostGIS qui me permet de faire des requêtes géographiques sur les objetx. Mais les problèmes d'encodage doivent être les mêmes.

    [Edit2] : il s'agit de jeu de caractères SQL-ASCII en dév et en prod sauf que dans un les caractères semblent normaux et dans l'autre les caractères sont encodé en décimal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Charger un document XML issu d'un appel AJAX
    Par Land3r dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 26/08/2011, 19h58
  2. [AJAX] manipuler document xml en ajax
    Par zougagh dans le forum AJAX
    Réponses: 3
    Dernier message: 15/11/2009, 17h11
  3. [AJAX] Transfert de document xml généré par php
    Par flash_math dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/11/2007, 12h03
  4. Stocker du texte mis en forme dans un document XML
    Par ovh dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 13/02/2003, 10h23
  5. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo