Bonjour,
j'ai un problème qui mélange JS avec ajax, PHP et HTML.
J'ai une page HTML avec un formulaire, un simple champ où je rentre un mot. je traite ce formulaire en PHP, il s'affiche dans une autre page.
Ce que je voudrai faire, c'est via ajax et l'objet XMLHttpRequest, donc sans recharger ma page html. récupérer le mot rentré dans le formulaire et l'afficher sur ma page html.
mon code index.html:
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Test PHP</title> <script>src="script.js"</script> <script src="jquery-3.4.1.min.js"></script> </head> <body> <form method="post" action="traitementAjax.php"> <p>Entrer un mot:<input type="text" name="mot" id="mot" autofocus/><button type="submit" id="submit">Submit</p> <p id="responseAjax"></p> </form> </body> </html>
Mon code traitementAjax.php
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?php $mot=strtoupper($_POST["mot"]); echo $mot; ?>
Mon code script.js:
Vous pouvez remarquer dans mon JS, que j'ai essayé plusieurs solutions, qui me donne le même résultat, affichage de mon mot traité par PHP (en MAJUSCULE) mais dans une nouvelle page. Moi ce que je veux, c'est l'afficher dans ma page html en dessous de mon champ de saisie, sans recharger la page (d'où ajax).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 "use strict"; //méthode avec fetch qui fournit une meilleur alternative à XMLHttpRequest /*fetch('traitementAjax.php', {method: 'POST'}) .then(response => { if (response.ok) { console.log(response.text()); document.getElementById('responseAjax').innerHTML = response.text(); } })*/ //fetch avec jquery, pour éviter les problèmes de cross-origin /*fetch('https://code.jquery.com/jquery-migrate-3.1.0.min.js') .then(response => { if (response.status === 200) { return response.text() } }) .then(text => { document.getElementById('responseAjax').innerHTML = response.text(); })*/ //méthode avec ajax et objet XMLHttpRequest( var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && this.status === 200) { document.getElementById('responseAjax').innerHTML = xhr.responseXML; } } xhr.open('POST', 'traitementAjax.php', true); xhr.send(); //autre méthode youtube /*$(document).ready(function() { $("#submit").click(function() { var mot = $("#mot").val(); var datastring = 'mot=' + mot; if (name === '') { $("#display").html('please Fill The Field'); } else { $.ajax({ type: "POST", url: "traitementAjax.php", data: datastring, cache: false, success: function(result){ $("#responseAjax").html(result); } }) } return false; }) })*/
Donc pour moi, le problème viendrait de cette ligne dans mon js:
Mais là, je suis à court d'idées...
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.getElementById('responseAjax').innerHTML = xhr.responseXML;
D'avance, merci de votre aide.
Partager