PC SOFT

AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

  • Example for using the AJAXExecute function
AJAXExecute (Example)
Example for using the AJAXExecute function
This example is used to return a complex structure in a procedure called in Ajax to exploit the result in a browser procedure.
// Appel d'une procédure Ajax qui retourne une chaîne Json
sZone is string
sZone = AJAXExécute(ajaxStraightCall, ProcServeurRetourDonneesJson, "Tour Eiffel")
 
// Transforme le buffer JSon reçu en objet
EXTERN JSON // Indique au compilateur de ne pas faire d'erreur sur JSON.xxxx (objet Javascript)
stZone is object dynamic = JSON.parse(sZone)
 
// Analyse du résultat
IF NOT stZone.bTrouve THEN
Info("Zone non trouvée", stZone.sMessageErreur)
ELSE
// Les points à afficher
UnePosition is géoPosition
FOR n = 1 _TO_ stZone.taCoordonnées..Count
UnePosition..Latitude = stZone.taCoordonnées[n].rLatitude
UnePosition..Longitude = stZone.taCoordonnées[n].rLongitude
MapAddMarker(CARTE_Plan, UnePosition)
END
// Le centre de la carte
UnePosition.Latitude = stZone.stCentre.rLatitude
UnePosition.Longitude = stZone.stCentre.rLongitude
MapDisplayPosition(CARTE_Plan, UnePosition)
// Le zoom
CARTE_Plan..Zoom = stZone.nZoom
ToastDisplay("Zone " + stZone.sNomZone + " affichée")
END
// ------------------------------------
// --Procédure serveur ProcServeurRetourDonneesJson
// ------------------------------------
PROCÉDURE ProcServeurRetourDonneesJson(...
sParametreNomZone is string <utile="Nom de la zone dont on veut les coordonnées">)
 
// Structure pour mémoriser un point
st_PointCarte is Structure
rLatitude is real
rLongitude is real
END
// Structure à renvoyer à la page
st_DonneesPourCodeNavigateur is Structure
sNomZone is string
// Pour gérer les cas d'erreur
bTrouve is boolean
sMessageErreur is string
// Centre de la carte et zoom
stCentre is st_PointCarte
nZoom is int
// Autres points
taCoordonnées is array of st_PointCarte
END
// Variable pour stocker ce qu'il faut envoyer à la page
stResPourPage is st_DonneesPourCodeNavigateur
// Variable pour les coordonnées d'un point
stUnPoint is 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 = True
 
 
// Ajout d'un point
stUnPoint.rLatitude = 48.860501
stUnPoint.rLongitude = 2.295683
ArrayAdd(stResPourPage.taCoordonnées, stUnPoint)
 
// Ajout d'un autre point
stUnPoint.rLatitude = 48.859352
stUnPoint.rLongitude = 2.297374
ArrayAdd(stResPourPage.taCoordonnées, stUnPoint)
 
// Ajout d'un autre point
stUnPoint.rLatitude = 48.856397
stUnPoint.rLongitude = 2.293040
ArrayAdd(stResPourPage.taCoordonnées, stUnPoint)
 
// Ajout d'un autre point
stUnPoint.rLatitude = 48.857478
stUnPoint.rLongitude = 2.291176
ArrayAdd(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 is Buffer
Serialize(stResPourPage, bufJson, psdJSON)
 
RETURN bufJson
Versión mínima requerida
  • Versión 10
Comentarios
Haga clic en [Agregar] para publicar un comentario