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 :

Appeler un webservice depuis javascript


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut Appeler un webservice depuis javascript
    Bonjour à tous,

    Je dois appeler depuis JS un webservice qui fournit l'altitude d'un point en fonction de ses coordonnées géographiques (lat & long). Exemple d'utilisation du webservice : http://ws.geonames.org/srtm3?lat=50....0.2&style=full.
    Savez-vous comment je peux procéder?

    Merci d'avance

  2. #2
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    ajax

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut
    Et plus précisément, comment je fais?

    Ca m'étonne quand même que je sois obligé de passé par Ajax, alors que finalement ca n'est qu'une URL à construire et à appeler...

  4. #4
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Détaille tes besoins! tu peux faire
    un lien comme tu l'a fait
    un formulaire
    ajax
    popup/fram/iframe
    pour appeler un service.
    Que veux tu faire du résultat?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut
    C'est assez simple :
    Dans mon formulaire j'ai un champ "adresse", qui me permet, en utilisant l'API Google Maps Javascript, de récupérer les latitude/longitude de l'adresse en question et de remplir des champs cachés correspondant. A partir de ces données (lat/long), je souhaite appeler le webservice en question (geonames), récupérer l'altitude et remplir un champ caché "altitude".

    J'espère avoir été plus clair...

  6. #6
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    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
    32
    33
    function getXhr(){
    	var xhr = null; 
    	if(window.XMLHttpRequest) // Firefox et autres
    	   xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    	   try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    	}
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   xhr = false; 
    	} 
    	return xhr;
    }
    /**
    * Méthode qui sera appelée pour remplir le champ cache
    */
    function go(long,lat,champ){
    	var xhr = getXhr();
     
    	var varURL="./srtm3";
    	var varForm=lat="lat="+lat+"&lng="+long+"&style=full";
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4 ){ 			
    			champ.value=xhr.responseText;
    		}
    	}
    	xhr.open("GET",varURL,true);
    	xhr.send(varForm);
    }

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut
    Merci beaucoup pour ton aide.
    J'ai essayé ton code mais maleureusement, il ne fonctionne pas encore : la fonction onreadystatechange n'est jamais appelée.
    Voilà mon code très légèrement modifié :
    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
    32
    33
    34
    35
    36
    function getXhr(){
    	var xhr = null; 
    	if(window.XMLHttpRequest) // Firefox et autres
    	   xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    	   try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    	}
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   xhr = false; 
    	} 
    	return xhr;
    }
     
    function remplir_altitude(longitude,latitude,champ){
    	var xhr = getXhr();
     
    	var varURL="http://ws.geonames.org/srtm3"; // J'ai changé l'adresse du webservice
    	var varForm="lat="+latitude+"&lng="+longitude+"&style=full";
    	alert(varForm);
    	xhr.onreadystatechange = function(){
    		if(xhr.readyState == 4 ){ 			
    			champ.value=xhr.responseText;
    			alert(xhr.responseText); // J'ai mis des alerts dans chacun des cas pour détecter le passage par la fonction onreadystatechange
    		}
    		else { 			
    				alert('Erreur'); 
    		}
    	}
    	xhr.open("GET",varURL,true);
    	xhr.send(varForm);
    }
    Peut-être as-tu un lien où les XMLHTTPRequest seraient bien expliqués?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 171
    Points : 91
    Points
    91
    Par défaut
    ... mais ceci est surement dû à la restricition de ce webservice qui refuse les requêtes XMLHttpRequest. Dans le forum de geonames.org, ils disent que l'on peut utiliser leur webservice JSON, et que c'est compatible avec javascript.

    Mais comment faire appel à un webservice JSON en javascript?

  9. #9
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Citation Envoyé par Flackou Voir le message

    var varURL="http://ws.geonames.org/srtm3"; // J'ai changé l'adresse du webservice

    FF ne supporte pas les différents domaines
    ie : il y a un peu moins de sécurité!
    Si ce n'est pas un de tes services, il vaux mieux ne pas utiliser javascript!

Discussions similaires

  1. appel de webservice depuis le client GWT
    Par dolfendo dans le forum GWT et Vaadin
    Réponses: 8
    Dernier message: 05/11/2009, 18h59
  2. [2.3.1] Appel à des dataset depuis javascript
    Par Bouillou dans le forum BIRT
    Réponses: 6
    Dernier message: 06/02/2009, 08h36
  3. Appeler une DLL depuis Javascript
    Par troubleshooting dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/07/2008, 14h45
  4. Appeler un WebService depuis une procédure stockée
    Par kheironn dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 18/11/2007, 12h10
  5. appeler une servlet depuis javascript
    Par root76 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 22/05/2007, 11h12

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