Réception PHP d'un POST JSON Ajax

Résolu/Fermé
Wundoz - Modifié le 2 juil. 2017 à 17:19
 Wundoz - 3 juil. 2017 à 11:35
Bonjour,

J'ai à nouveau un problème, enfin du moins, je ne parviens pas à me documenter sur la façons de faire ma demande.

En faite, d'une fonction JS, je fais un POST d'une donnée JSON vers une page 'connexion.php'

var result = {
user: usernameResult,
pass: passwordResult
}
$.ajax({
type: "POST",
url: 'views/connexion.php',
data: result,
success: window.location.href = 'views/connexion.php',
dataType: 'json'
});
window.location('views/connexion.php');


Jusque là, il me semble que cela fonctionne. Mon problème vient de la réception de celui-ci sur la page connexion.php.

Je ne sais absolument pas comment m'y prendre, j'ai vue de nombreuse document, ils disent d'utiliser "$value = $_POST['result'];" ou bien de faire

$value = json_decode(file_get_contents('php://input'));
echo $value;


Cependant, rien ne fonctionne :/

Bonne journée, merci

A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
2 juil. 2017 à 19:16
Bonjour,

Pour commencer, remplaces ton fichier views/connexion.php par le code suivant :
<?php
  $result = array();

//recuperation propre des variables
 $user = !empty($_POST['user']) ? $_POST['user'] : NULL;
 $pass= !empty($_POST['pass']) ? $_POST['pass'] : NULL;
 
//traitement
 if($user && $pass){
  
   $result = array("result"=>"ok","user"=>$user,"pass"=>$pass);
 
 }else{
      $result = array("result"=>"KO","post"=>$_POST);
 }

//renvoi du resultat au format json
echo json_encode($result);
?>


Ensuite.. pense à regarder dans la CONSOLE de ton navigateur les éventuelles erreurs.
(de préférence via la console de firefox (via firebug par exemple ))


0
Merci de ta réponse,

J'ai regardé dans la console, je n'ai pas d'erreur particulière :/
En utilisant le code que tu m'as donnés, je ne parviens pas à avoir le résultat escompté (Je n'ai que 'KO').

Tu penses que cela pourrait provenir de mon "ajax" ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Wundoz
2 juil. 2017 à 19:37
Comment ca tu n'as que le ko ?
Peux tu nous faire une capture ecran de ta console avec ce "ko" ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
2 juil. 2017 à 19:38
Ah oui.. et vires les redirections le temps des tests...
0
Mais non... C'est pas dans la console, j'ai dis elle est vide. C'est en fonction de ton code,
 if($user && $pass){

$result = array("result"=>"ok","user"=>$user,"pass"=>$pass);

}else{
$result = array("result"=>"KO","post"=>$_POST);
}

Ma page contient "KO", donc mes $_POST['user'] semblent être vide.

Et les redirections me permettent d'aller sur la page connexion.php qui traite les informations JSON envoyé en POST grâce à AJAX depuis indexCtrl.js donc de voir si il y a une réponse 'OK' ou 'KO'
Ce n'est pas ça la cause du soucis..
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Wundoz
2 juil. 2017 à 21:00
- Tu le vois où ce "ko" ?
- Que contient la console de ton navigateur (lors de l'appel à l'ajax) ??
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
2 juil. 2017 à 21:25
Dis donc .... quand tu dis que tu le vois sur ta page ..... ce n'est pas sur ta page connexion que tu dois regarder....
Normal qu'il n'y ait rien ... puisque c'est le JAVASCRIPT qui est sensé faire appel à cette page et lui envoyer les données...

Donc dans ta page (celle qui contient ton code ajax javascript) remplaces ton code actuel
var result = {
user: usernameResult,
pass: passwordResult
}
$.ajax({
    type: "POST",
    url: 'views/connexion.php',
    data: result,
    success: window.location.href = 'views/connexion.php',
    dataType: 'json'
});
window.location('views/connexion.php');

par celui-la et dis moi ce qui s'affche dans la console.
var datas = {user: usernameResult,pass: passwordResult};

$.ajax({
    type: "POST",
    url: 'views/connexion.php',
    data: datas,
    dataType: 'json',
    success: function(reponse){
       console.log(reponse);
       //window.location('views/connexion.php'); //le temps des tests on désactive cette redirection
    },
    error:function(jqXHR, textStatus){
      console.log('error :' + textStatus + ' : ' + jqXHR.responseText);
      alert('Erreur ' + jqXHR.responseText );
    }
   
});


NB: Tu noteras que j'ai désactivé la redirection pour être bien sûr de pouvoir lire la console lors de l'appel à la fonction !

NB² : Tu utilises GoogleChrome... hors, si tu n'installes pas un widget special pour crhome.. tu ne verras pas les appels ajax.
Donc soit tu installes : https://chrome.google.com/webstore/detail/ajax-debugger/lgfefckpdealogpcfjdhinecfbcgedam

Soit ..(et perso même avec le plugin.. je préfère quand même ) utiliser la console de FIREFOX.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
2 juil. 2017 à 22:02
Je viens de penser à un truc....
Tu peux me dire à quoi ça te sert de faire une requête ajax vers ta page de connexion.... si par la suite tu veux rediriger vers cette page ??????

C'est comme si tu envoyais un mail à une personne et qu'en plus tu te rends chez lui pour lui dire ce que tu lui à écris dans ton mail............
0
Je l'en conçois que c'est complètement idiot, c'était pour vérifier la réponse et apparemment ce n'est pas la façons la plus adéquate de faire :/

Pour en revenir au sujet, maintenant les résultats sont convainquant. Merci beaucoup
0