Bonjour,
J'ai une page web avec une carte, et je fais une requête ajax pour récupérer les données à afficher sur cette carte.
ma fonction ajax :
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
| function WMSLayersList(requete) {
var list='';
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
var docXML= xhr.responseXML;
var i,j, n_layers, layers = docXML.getElementsByTagName("Layer");
n_layers = layers.length;
for (i = 0; i < n_layers; i++) {
var layer = layers[i];
if (layer.hasAttribute('queryable')) {
layerName = layer.getElementsByTagName("Name")[0].firstChild.nodeValue;
if (layerName.substr(0,2)=="PI") {
list = list + layerName + ',';
}
}
}
list = list.substr(0, list.length-1); // pour enlever la dernière virgule
} // fin if(xhr.readyState == 4 && xhr.status == 200)
} // fin function xhr.onreadystatechange
xhr.open("GET",requete,true);
xhr.send(null);
alert('list='+list);
return list;
} |
l'appel à ma fonction dans ma page html :
var list=WMSLayersList('http://www.monsite.fr/geoserver/wms?service=WMS&version=1.1.0&request=getCapabilities');
La requête passée en paramètre est une requête wms sur un serveur de données géographiques. Cette requête renvoie au format xml la liste des couches géographiques disponibles sur le serveur (nom, emprise géographique, système de coordonnées, ...).
Je veux renvoyer la liste des noms des données géographiques, séparés par une virgule.
Le problème vient de ma fonction ajax :
si je met à la fin de la fonction l'instruction alert, pour voir ce qu'il y a dans la variable list, celle-ci est vide, mais au final, la carte se met quand même correctement à jour.
si je ne met pas cette instruction alert, la carte ne se met pas à jour et j'ai un message d'erreur :
code="org.geoserver.wms.kvp.GetMapKvpRequestReader"No LAYERS been requested
Quelqu'un a-t-il une idée du problème ?
Merci,
Nico
Partager