bonsoir à tous,
voilà j'ai récupérer un jeux de fonction d'un script java et je souhaiterai le comprendre mais je rame un peu pourriez vous m'aider.
d’après ce que j'ai pu comprendre une fonction lance une requête équivalente à une ajax
et le programme interroger lui répond ceci
du XML si j'ai bien comrpis
var planeinfo=({"PilotID":"2807157","GamespyID":"Warbird","AircraftMake":"IRIS Pro Series","AircraftModel":"A-10A Thunderbolt II","AircraftType":"Twin Engine Close Air Support","Airline":"FFSII SW Air Force","FlightNumber":"1969","TailNumber":"F-WARB","Depart":"","Destination":"","FlightRule":"","FL":"0","Remarks":"","Alt":"12291","Heading":"183","Speed":"367","flat":null,"flon":null,"tlat":null,"tlon":null,"ComActive":"128.300","ComStandby":"0.000","Callsign":"FFS1969"}]);
var planeRoute=({"Lat":"21.0429489404169","Lon":"-86.8804860589014"},{"Lat":"21.0429772714059","Lon":"-86.8805292256772"},{"Lat":"21.040106843088","Lon":"-86.8786456455104"},{"Lat":"21.0464493993141","Lon":"-86.8896368286392"},{"Lat":"21.0382587908821","Lon":"-86.8800222884732"},{"Lat":"20.7700417958403","Lon":"-86.7739230474074"},{"Lat":"20.319911520392","Lon":"-86.772821498344"},{"Lat":"19.9041984755703","Lon":"-86.7501358070073"},{"Lat":"19.5072936924375","Lon":"-86.7349664990755"},{"Lat":"19.066667936549","Lon":"-86.7133521819686"},{"Lat":"18.5297588575728","Lon":"-86.7693976605613"},{"Lat":"17.9782364716868","Lon":"-86.8163565747566"},{"Lat":"17.4718063346645","Lon":"-86.8593925091305"},{"Lat":"16.9782568150085","Lon":"-86.9060745692278"},{"Lat":"16.5088206226079","Lon":"-86.9535261714001"}]);
comme vous le voyez dans l'écho, les variables sont nommé, c'est cool, mais comment les exploités.
j'ai donc ces fonctions qui doivent permettre d'extraire les données.
getdata()
function getdata()
{
setTimeout('getdata();', 30000);//tempo pour rafraichissement des données
xmlHttp = GetXmlHttpObject(); //lancement de la fonction GetXmlHttpObject()
if (xmlHttp == null)
{
return; //si xmlHttp est vide ??
}
var url = "http://www.fsopen.co.uk/maps/data.php"; //adresse pour une recherche d'info équivalent requéte ajax
url = url + "?HostID=7240"; //complément d'adresse méthode GET
xmlHttp.onreadystatechange = stateChangeddata; //??
xmlHttp.open("GET", url, true); //envoie de paramétre méthode GET sélectionnez
xmlHttp.send(null);//??
}
function GetXmlHttpObject()
{
var xmlHttp = null; //on vide xmlHttp
try
{
xmlHttp = new XMLHttpRequest(); //on tente d'allez chercher des infos, départ de la requêtes ajax où la fonction XMLHttpRequest() est connu de java??
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); //cherche si le format des données est en Msxml2??
}
catch (e)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //cherche si le format des données est en Microsoft??
}
}
return xmlHttp; //renvoie les infos dans xmlhttp
}
function stateChangeddata()
{
if (xmlHttp.readyState == 4) //??
{
//data = eval(xmlHttp.responseText);
dataTXT = (xmlHttp.responseText); //??
//alert(dataTXT);
eval(dataTXT);//destroyoldplanes() //??
}
}
j'ai essayer de décrypter ce scrpit, mais y a des trous et l'architecture du try and catch est quelque peu brumeuse.
Pourriez vous m'aider à compléter les trous.
Merci d'avance flo
Ce que l'ajax retourne, c'est du javascript tout con (assignation de valeurs a des variables), que tu pourrais mettre directement dans tes tag <scripts> ou dans ton fichier .js. La raison pour laquelle tu ne le fais pas c'est parce que tu veux mettre a jour ces variables toutes les 30s, par requête vers le serveur.
Ce script que tu récupère est alors interprété lorsqu'il est passé en paramètre a la fonction eval() [ligne 51], et il a pour effet d'assigner des valeurs aux variables planeInfo et planeRoute, dans ton JS. Ces 2 variables sont des tableaux d'objets (enfin planeInfo est un tableau avec 1 seule entrée)
La fonction getdata() [ligne 2] récupère ces variables et fait le boulot:
La fonction stateChangeddata() [ligne 43] est la fonction qui sait que faire des données récupérées.
T'occupe pas du try catch ... c'est juste pour éviter un gros plantage si l'ajax foire.
Et donc pour les récupérer:
planeinfo[0].PilotID; // = 2807157
planeRoute[3].Lat; // = 21.0464493993141
etc ...
merci de ta réponse Vallyan, quelque points reste encore brumeux, mais je pourrait me débrouiller avec tes explication.