J'essaye de convertir un ancien script , qui passait d'un appelle ajax dans un fichier Jquery vers un script PHP.
J'ai réussie à réécrire mon appelle en JS avec la méthode Fetch mais je n'arrive pas à récupérer et traiter les données du coté de php.
A savoir qu'à terme j'aimerais que mon script de traitements soit aussi en JS. Mais pour le moment je me concentre sur la méthode fetch() que je découvre.
Voilà mon script fetch() , j'ai détaillé tout le traitement pour êtres sur que je n'ai pas un plantage au milieu de ma requêtes
function getTree(data, url) {
const options = {
method: 'POST',
headers: {
'X-Requested-With': 'xmlhttprequest'
},
body: JSON.stringify(data)
}
fetch(url, options)
.then(response => {
console.log(response);
console.log('la reponse est : ' + response.ok)
console.log('le status est : ' + response.status)
console.log('le statusText est : ' + response.statusText)
console.log('le Text est : ' + response.responseText)
if (response.ok) {
console.log('Tout ce passe bien')
return response.json()
} else {
console.log('Erreur : ' + response.statusText)
}
return response.json()
})
.then(json => {
if (json.success === true) {
console.log('les json est : ', json.success);
} else {
console.log('le json est ', json.message);
}
})
.catch(error => console.log('erreur de fetch', error))
.catch(error => console.log('erreur de json', error))
}
const data = `{
"rep": "planes",
"nbCard": "2",
"action": "getTree"
}`
getTree(data, 'ajax.php')
A terme le script de traitement doit parcourir des dossiers et récupérer le nom des fichiers qui y sont contenu de manière récursive dans le but de créer un jeu de memory dynamique en React.
Mais du coup je me demande maintenant comment traité mes données coté php.
Autrefois je faisais simplement :
extract($_POST);
$tabReturn = json_decode($_POST['json'],true);
echo json_encode($tabReturn);<br><br>
Et j'ai essayé ceci et autres sans succès :(
<?php
$data = array();
$data['input'] = $_POST;
$data['success'] = true;
echo json_encode($data);
Seulement " $data['input] " reste vide . Alors que dans la console, je vois bien que mes données sont transmise.
Je vois vraiment pas ou est le problème :(
Bon j'ai trouvé mais je comprends pas pourquoi cela marche
les options à envoyer au fetch :
const options = {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({data})
}
Et coté php :
$content = trim(file_get_contents("php://input"));
$data = json_decode($content, true);
$data['success'] = true;
echo json_encode($data);
Cela marche mais je comprends pas ce que je fait. Ce qui au fond n'est pas mieux