variable javascript vers php dans script

Eléphant du PHP | 65 Messages

07 août 2023, 16:24

Bonjour, j'ai un script javascript qui à l'appui sur un bouton affiche un score. Je voudrai récupéré cette valeur au moment du clic pour l'insérer dans une base de données. j'ai essayé avec Ajax de lancer ma fonction en même temps que celle (javascript) qui affiche le score mais cela ne fonctionne pas. Quelqu'un aurait-il une idée de comment faire ?
FONCTION JAVASCRIPT

Code : Tout sélectionner

function CheckAnswers(){ if (Locked == true){return;} var Feedback = ''; var AllDone = DragEx.CheckAnswers(); Score = DragEx.Score; if (Score < 0){Score = 0;} if (AllDone == true){ Feedback = YourScoreIs + ' ' + Score + '%.<br/>' + CorrectResponse; } else { if (TimeOver == true){ Feedback = YourScoreIs + ' ' + Score + '%.' } else{ Feedback = YourScoreIs + ' ' + Score + '%.' + '<br />' + IncorrectResponse; } } ShowMessage(Feedback); //If the exercise is over, deal with that if ((AllDone == true)||(TimeOver == true)){ TimeOver = true; Locked = true; Finished = true; WriteToInstructions(Feedback); } go(); //The window layout may be affected by the feedback, so //put the cards in place again. DragEx.SetInitialPositions(false); }
La valeur que je veux récupérer est CorrectResponse qui s'affiche en html ici

Code : Tout sélectionner

<button id="CheckButton1" class="FuncButton" style="cursor:pointer;" onclick="CheckAnswers()">&#160;Valider&#160;</button>

Mammouth du PHP | 2703 Messages

07 août 2023, 16:35

qu'avez-vous essayé avec ajax (car pas de trace dans le code donné) ?
https://api.jquery.com/jquery.get/ ou https://api.jquery.com/jquery.post/ permet de le faire facilement.

Eléphant du PHP | 65 Messages

07 août 2023, 18:26

la fonction go() appelée dans la fonction de scoring est celle d'ajax (voir ci-dessous)

Code : Tout sélectionner

<script type="text/javascript"> /*<![CDATA[*/ /** Méthode appelée sur le click du bouton **/ function go(){ var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('okenregistrement').innerHTML = leselect; } } // Ici comment faire du post xhr.open("POST","ajaxScore.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments //sel = document.getElementById('clientCP'); //varRetour = sel.options[sel.selectedIndex].value; varRetour = <?php echo $idStagiaire."-".$idMatiere."-"; ?> + Score; xhr.send("varRetour="+varRetour); } /*]]>*/ </script>
et voici ce que contient le fichier qui traite l'ajax

Code : Tout sélectionner

<?php include("fichier-connexion-bdd.php"); if (isset($_POST['varRetour'])) { $score = $_POST['varRetour']; $chaine = explode("-",$score); $idStagiaire = $chaine[0]; $matiere = $chaine[1]; $score = $chaine[2]; $aujourdhui = date('d-m-y h:i:s'); $req = mysqli_query($bdd, "INSERT INTO resultat VALUES ('NULL','$idMatiere','$idStagiaire','$score','$aujourdhui'"); ?>

Mammouth du PHP | 2703 Messages

07 août 2023, 22:00

l'appel du fichier est bien présent dans la console ?
que contient $_POST dans le php ?

Eléphant du PHP | 65 Messages

08 août 2023, 07:46

$_POST contient varRetour = <?php echo $idStagiaire."-".$idMatiere."-"; ?> + Score;
Je pense que le soucis vient du fait que je lance une fonction en Ajax (pour l'insertion en BDD) en même temps qu'une simple fonction javascript pour afficher le score. Mais je ne vois pas comment faire autrement car si je le fais en deux temps l'utilisateur risque de zapper la seconde manip.

Mammouth du PHP | 2703 Messages

08 août 2023, 10:49

l'appel du fichier ajaxScore.php est bien présent dans la console ?
qu'affiche un var_dump( $_POST ); dans ajaxScore.php ?

Eléphant du PHP | 65 Messages

08 août 2023, 16:16

l'appel de fichier se fait par la première partie de la fonction go().
J'ai essayé de faire un echo dans le fichier ajaxScore.php mais il ne se passe rien. Je pense que la fonction appelée juste avant empêche l'ajax. J'ai essayé de lancer la fonction go() dans la fonction d'affichage du score mais pas plus de résultat. Je crois que je vais laisser tomber pour l'instant car je manque de temps, j'y retournerai dès que possible, Merci de m'avoir aidée