2 pièce(s) jointe(s)
PHP - Récupérer des données en JSON et les appeler avec JS
Bonjour,
Je récupère depuis ma bdd des données (via un SELECT depuis mon manager), que je manipule dans ma Vue. Je crée une boucle while en faisant un fetchAll pour afficher toute les données (jusqu'ici tout va bien) en indiquant que je souhaite retourner du JSON :
Index:
Code:
1 2 3 4
| //JSON
elseif($_GET['action'] == "json_data") {
marker();
} |
Controller :
Code:
1 2 3 4 5 6 7
| function marker() {
//Afficher les markers
$locationManager = new LocationManager();
$listMarker = $locationManager->addMarker();
header("Content-type:application/json");
require('View/frontend/locationView.php');
} |
La vue :
Code:
1 2 3 4 5 6 7 8 9 10
| <?php
while ($data = $listMarker->fetchAll()) {
[{
"name": $data->location_name,
"position": {
"latitude": $data->latitude,
"longitude": $data->longitude
}
}]
} |
Ce que je veux c'est qu'ensuite en javascript je récupère les données de cette boucle et notamment la "position" pour pouvoir afficher les marqueurs sur ma map.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| function initMarkers() {
var map = L.map('map').setView([34.886306,134.379711], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
}).addTo(map);
this.ajaxGet('http://localhost/Tokyo/TokyoAPI/index.php?action=json_data', (reponse) => {
let datas = JSON.parse(reponse);
for (const data of datas) {
L.marker(Object.values(data.position), {
"data": data
})
.addTo(map)
.bindPopup(data.image)
.openPopup();
}
});
}
initMarkers(); |
Mais j'ai ce message d'erreur suivant en entrant sur la page d'accueil de mon site (là ou contient ma map) :
Pièce jointe 589423
par aillleurs l'URL http://localhost/Tokyo/TokyoAPI/inde...tion=json_data me renvoie du code HTML alors qu'il devrait renvoyer du JSON avec le header que j'ai inséré dans le controller.
Pièce jointe 589429
(les symboles "{" et "[" et ":" ne sont pas comprise)
Merci pour votre aide.