Javascript draait in een loop vanwege JSON-string?
Door
Ariën
op 22-10-2017 23:00
gewijzigd op 22-10-2017 23:02
3.245 views
Ik heb hier een stukje AJAX-code die wat coordianten uit een API ophaalt, en verwerkt in Google Maps met een timertje die elke 5 seconden ververst. En zodoende heb je dus een mooie voertuigtracker... als het werkt.
Echter is het probleem dat deze in een recursieve loop draait, geeft de debugger weer, en inderdaad wordt er een hoop geheugen gebruikt.
Dus, het werkt niet. En het ligt aan de format van de JSON-string, heb ik het idee.
Als deze gewoon leeg is dan laad hij het script prima in (en uiteraard op de 0,0 locatie). Maar met onderstaande JSON-string in de request gaat hij dus voluit op zijn plaat op lijn nummer 15.
Ja, ik kan ook data krijgen van meerdere trainsets, als je op het TrainNumber (Lijnnummer/Treinnummer) filtert. (m.a.w. treinen kunnen ook gekoppeld rijden).
En die 1234 is in dit geval een (fictief) VehicleNumber van een trein, en geen dummy iets.
Maar opsich lijkt mij dat die eerste array overbodig is, zodat je per trainset een enkele array hebt.
Dus dat lijkt mij logischer.
Hoe maken we er dan per trainset een enkele array van?
$arr is het orgineel, en ik wil de API dus wijzigen met extra inhoud, en andere aanduidingen. En die commented array helpt ook niet.
Hoe maken we er dan per trainset een enkele array van?
Opvragen via specifiek $data['Trackee'] en dan alleen een array/object teruggeven met DateGPS, DateReceived, ... en alle andere informatie die je er in wilt stoppen?
En dit stelt dus een enkele array voor per trainset, en geen multi-dimensionale en ook geen key.
Maar hoe krijg ik dat dan voor elkaar? Ik krijg dan constant die key er steeds bij :/
Update 1:
Ik kreeg vanmorgen in mijn schoot geworpen van een vriend dat ik in een enkel element in de foreach een array moet aanmaken met die trein-properties en values. Erg logisch, en 'that was the trick'!
Update 2:
Echter bij het filteren op een waarde van een propterty/argument gaat het ook mis: https://3v4l.org/CnbbQ
[size=xsmall]Toevoeging op 23/10/2017 23:33:20:[/size]
Update 3:
Het probleem is getackeld, en de key is eruit gehaald zodat de AJAX-request in getCoords() de boel beter kan uitlezen.
$json_to_array = json_decode($json, true);
$resulted_array = array_values(array_filter($json_to_array,function($v){ return ($v['VehicleNumber'] == $_GET['VehicleNumber']);}));
if (count($resulted_array) == 1) // Als hij niet 1 is is het item niet gevonden...
$resulted_array = $resulted_array[0];
echo json_encode($resulted_array);
?>