Bonjour, je suis en train de faire un système qui récupère des informations en js et qui envoie ces mêmes informations par le biet d'une requête ajax (en POST). Mais quand j'envoie la requête à ma page php il n'y a rien dans le POST.
<script type="text/JavaScript">
var city;
var state;
fetch('http://ip-api.com/json/86.194.8.204')
.then(function(response){
return response.json()
}).then(function(data){
city = data.city
state = data.country
})
var xhr = new XMLHttpRequest()
xhr.open("POST", "config/functions.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(`city=${city}&state=${state}`);/*city=${dataa.city}&*/
</script>
Les variables $_POST['city']/$_POST['state'] existent mais sont vides ?
fetch est asynchrone donc il n'est pas impossible que tu exécutes la requête ajax (qui est aussi asynchrone d'ailleurs avec le true renseigné en open) avant d'avoir réalisé le fetch.
PS : pourquoi c'est le client qui t'envoie des informations sur l'IP ?
Non non j'ai vérifié en js les variables sont bien récupéré avant l'ajax. Et bah là c'est un test mais après je remplacerais l'ip dans le lien par celui du client.
C'est ce que tu as obtenu en te rendant directement sur config/functions.php (d'ailleurs avec ce naming, ça ne devrait même pas être accessible en http) donc une requête en GET ? Ce n'est pas le résultat de la requête ajax ? (dont il faudrait récupérer le résultat via la console du navigateur, onglet réseau)
EDIT : c'est bien ce que je pensais, moi, j'obtiens :
Les clés existent mais les valeurs sont undefined côté JS (et mal encodés parce que ce n'est pas une interpolation que l'on devrait trouver non plus mais bref ...) donc le problème est bien lié au fait que le fetch soit asynchrone donc n'a pas encore eu lieu/n'est pas encore terminé, tes variables en sont toujours undefined/pas encore affectées avec les valeurs voulues mais tu les utilises quand même et déjà pour ta requête ajax.
La solution simple et évidente serait de déplacer la requête ajax dans la promesse (ie dans la callback du dernier then).
Du coup, c'est un problème Javascript, pas PHP => à déplacer.
Oui oui j'ai tout vérifié et le problème vient en faite des promises js du fetch désolé pour le dérangement
Problème de communication ajax php pour POST
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli