DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions spécifiques au WEB / Fonctions Ajax
  • Exemple d'utilisation de la fonction AJAXExécute
AJAXExécute (Exemple)
Exemple d'utilisation de la fonction AJAXExécute
Cet exemple permet de renvoyer une structure complexe dans une procédure appelée en Ajax pour exploiter le résultat dans une procédure navigateur.
// Appel d'une procédure Ajax qui retourne une chaîne Json
sZone est une chaîne
sZone = AJAXExécute(ajaxAppelSimple, ProcServeurRetourDonneesJson, "Tour Eiffel")
 
// Transforme le buffer JSon reçu en objet
EXTERNE JSON // Indique au compilateur de ne pas faire d'erreur sur JSON.xxxx (objet Javascript)
stZone est un objet dynamique = JSON.parse(sZone)
 
// Analyse du résultat
SI PAS stZone.bTrouve ALORS
Info("Zone non trouvée", stZone.sMessageErreur)
SINON
// Les points à afficher
UnePosition est une géoPosition
POUR n = 1 _À_ stZone.taCoordonnées..Occurrence
UnePosition.Latitude = stZone.taCoordonnées[n].rLatitude
UnePosition.Longitude = stZone.taCoordonnées[n].rLongitude
CarteAjouteMarqueur(CARTE_Plan, UnePosition)
FIN
// Le centre de la carte
UnePosition.Latitude = stZone.stCentre.rLatitude
UnePosition.Longitude = stZone.stCentre.rLongitude
CarteAffichePosition(CARTE_Plan, UnePosition)
// Le zoom
CARTE_Plan..Zoom = stZone.nZoom
ToastAffiche("Zone " + stZone.sNomZone + " affichée")
FIN
// ------------------------------------
// --Procédure serveur ProcServeurRetourDonneesJson
// ------------------------------------
PROCÉDURE ProcServeurRetourDonneesJson(...
sParametreNomZone est une chaîne <utile="Nom de la zone dont on veut les coordonnées">)
 
// Structure pour mémoriser un point
st_PointCarte est une Structure
rLatitude est un réel
rLongitude est un réel
FIN
// Structure à renvoyer à la page
st_DonneesPourCodeNavigateur est une Structure
sNomZone est une chaîne
// Pour gérer les cas d'erreur
bTrouve est un booléen
sMessageErreur est une chaîne
// Centre de la carte et zoom
stCentre est un st_PointCarte
nZoom est un entier
// Autres points
taCoordonnées est un tableau de st_PointCarte
FIN
// Variable pour stocker ce qu'il faut envoyer à la page
stResPourPage est un st_DonneesPourCodeNavigateur
// Variable pour les coordonnées d'un point
stUnPoint est un st_PointCarte
 
// Nom de la zone
stResPourPage.sNomZone = sParametreNomZone
 
 
// On pourrait rechercher la zone dans une base :
// SI pas HLitRecherchePremier(Zone, NomZone, sParametreNomZone) ALORS
// stResPourPage.bTrouve = Faux
// stResPourPage.sMessageErreur = "Zone non trouvé"
// SINON
// stResPourPage.bTrouve = Vrai
// // puis lecture des informations de la zone
// // etc.
// FIN
 
// Ici on renvoie des données en dur
stResPourPage.bTrouve = Vrai
 
 
// Ajout d'un point
stUnPoint.rLatitude = 48.860501
stUnPoint.rLongitude = 2.295683
TableauAjoute(stResPourPage.taCoordonnées, stUnPoint)
 
// Ajout d'un autre point
stUnPoint.rLatitude = 48.859352
stUnPoint.rLongitude = 2.297374
TableauAjoute(stResPourPage.taCoordonnées, stUnPoint)
 
// Ajout d'un autre point
stUnPoint.rLatitude = 48.856397
stUnPoint.rLongitude = 2.293040
TableauAjoute(stResPourPage.taCoordonnées, stUnPoint)
 
// Ajout d'un autre point
stUnPoint.rLatitude = 48.857478
stUnPoint.rLongitude = 2.291176
TableauAjoute(stResPourPage.taCoordonnées, stUnPoint)
// etc...
 
// Centre de la carte
stResPourPage.stCentre.rLatitude = 48.858288
stResPourPage.stCentre.rLongitude = 2.294453
// Zoom de la carte
stResPourPage.nZoom = 15
 
// Sérialise les données à transmettre à la page en JSON
bufJson est un Buffer
Sérialise(stResPourPage, bufJson, psdJSON)
 
RENVOYER bufJson
Version minimum requise
  • Version 10
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale