Bonjour
Je commence tout juste l'AJAX et je rencontre un problème pour mon tout premier essaie.
Je dispose de 4 fichiers:
- test.php qui appel ma fonction javascript me permettant d'accéder à mon script :
Dans un autre fichier, il y a ma fonction callScript() que j'ai récupérer dans un tuto sur le net :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <!--du html--> <body> <script language="javascript"> callScript("page.php","mot=blbla"); alert ("1"); // juste pour vérifier quand j'ai fini </script> <?php // juste pour faire jolie ou en cas de besoin, il y a rien de php dans cette page mis à part des commentaires ?> <!--encore du html-->
Ensuite il y a page.php qui devrait normalement être exécuté. Ce script est la pour s'assurer que le mot entrer en paramètre existe bien pour cela il utilise une fonction présent sur le 4ème fichier. Cette fonction renvoie true si le mot existe et false s'il n'existe pas.
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 function callScript ( scriptName, args ){ var xhr_object = null; // Construction de lobjet XMLHttpRequest selon le type de navigateur if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } xhr_object.open("POST", scriptName, true); // Définition du comportement à adopter sur le changement détat de lobjet XMLHttpRequest xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { //alert(xhr_object.responseText); // DEBUG MODE //document.write(xhr_object.responseText); eval(xhr_object.responseText); } return xhr_object.readyState; } xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); alert("2");// encore pour vérifier ou je suis // Envoi de la requête xhr_object.send(args); }
Mon problème vient du fait que mon script page.php ne s'exécute que quand le mot entré en paramètre est correcte dans le cas contraire il ne se passe presque rien : j'ai les 2 alert de test.php et de ma fonction qui s'exécute et c'est tout.
Voici ce que contient ma page.php :
Pour tester, j'ai appeler directement ce script dans mon navigateur en changeant quelques éléments :
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 <?php echo "alert('3');"; // Encore une vérification qui ne s'affiche pas quand mon mot est incorrecte // include include "fonction.php"; // contient ma fonction qui renvoie true ou false include "fonction2.php"; // fonction vérifiant plusieurs élément de sécurité // Récupération du mot $mot=injection($_POST['mot']); //injection est une fonction présente dans fonction2.php // Vérification que le mot est correcte if(verifmotexiste($mot)){ echo "alert('Le mot que vous avez choisi existe');"; } else{ echo "alert('Le mot que vous avez choisi n'existe pas');"; } ?>
- ma variable $mot prend comme valeur un texte taper directement dans le script
- en mettant dans mes echo uniquement le contenu de mes alert.
Avec cet essai, j'ai bien un de mes deux messages qui s'affiche selon si mon mot existe ou pas.
Du coup, je ne sais pas d'où peut venir mon erreur. Es-ce que vous avez une idée ?
Merci d'avance pour l'aide que vous pourrez m'apporter.
Partager