[Ajax] problème d'appel à un fichier php

problème d'appel à un fichier php [Ajax] - HTML/CSS - Programmation

Marsh Posté le 14-07-2011 à 21:25:36    

Bonjour,
 
J'ai un petit problème avec l'écriture d'un bout de javascript auquel je ne connais hélas pas grand chose et les tutoriaux ne m'aident plus beaucoup sur mon problème.
 
Mon idée est simple, j'ai un fichier index.php qui contient le code suivant :
 

Code :
  1. <html>
  2. <head>
  3. <script type="text/javascript" src="./ajax.js"></script>
  4. </head>
  5. <body>
  6. <form method="POST" action="add.php">
  7. <div style="background-color :#ccc; margin: 0px;">
  8. <div style="position: absolute; top:10; left:10; align="left"; width: 400px;">
  9.   <p>Login :</br>
  10.    <input type="text" name="login" size="20" value="<?php include("generator.php" ); ?>" maxlength="255">
  11.   </p>
  12.   <p>Password :</br>
  13.    <input type="text" name="passwd" size="20" value="<?php include("pw_generator.php" ); ?>" maxlength="255">
  14.   </p>
  15.   <p>Titre du site :</br>
  16.    <input type="text" name="titre" size="40" value="" maxlength="255">
  17.   </p>
  18.   <p>URL du site :</br>
  19.    <input type="text" name="url" size="40" value="" maxlength="255">
  20.   </p>
  21. </div>
  22. <div style="position: absolute; top:60; left:410; align="left"; width: 200px;">
  23.   <p>Mot de passe maitre :</br>
  24.    <input type="password" name="master_pw" size="20" value="" maxlength="255"></br>
  25.   </p>
  26.    <input type="submit" value="Envoyer" name="envoyer">
  27. </form>
  28. </div>
  29. </div>
  30. <div style="position: absolute; top:300; left:10; align="left"; width: 200px;">
  31. <form>
  32.   <p>Mot de passe maitre :</br>
  33.    <input type="password" id="master_pw2" name="master_pw2" size="20" value="" maxlength="255">
  34.    <input type="button" value="Interroger" onclick="submitForm()">
  35.   </p>
  36. <br clear="all" />
  37. </form>
  38.   </div>
  39.   <div id="divTable" style="position: absolute; top:400; left:10; align="left"; width: 1000px;">
  40.   </div>
  41. </body>
  42. </html>


 
Donc, dans la div située en valeur absolue top:300 j'aimerais y faire apparaitre le résultat du fichier php nommé tg.php. Initialement c'était un fichier beaucoup plus long et compliqué, mais comme rien n'apparaissait, j'ai simplifié pour débugger au mieux et tg.php ne contient qu'une fonction echo, à savoir :
 

Code :
  1. <?php
  2. echo "tada";
  3. ?>


 
J'espère donc appeler ce fichier tg.php par le code javascript suivant :
 
 

Code :
  1. function submitForm()
  2. {
  3.     var xhr;
  4.     try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
  5.     catch (e)
  6.     {
  7.         try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
  8.         catch (e2)
  9.         {
  10.           try {  xhr = new XMLHttpRequest();     }
  11.           catch (e3) {  xhr = false;   }
  12.         }
  13.      }
  14.     xhr.onreadystatechange  = function()
  15.     {
  16.          if(xhr.readyState  == 4)
  17.          {
  18.               if(xhr.status  == 200)
  19.                  document.ajax.dyn="Received:"  + xhr.responseText;
  20.               else
  21.                  document.ajax.dyn="Error cpp " + xhr.status;
  22.          }
  23.     };
  24.   var mpw = document.getElementById("master_pw2" );
  25.   alert(""+mpw.value+"" );
  26.   var url = "tg.php";
  27.   xhr.open("POST", url, true);
  28.   xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencppd" );
  29.   xhr.send("master_pw2="+mpw.value);
  30. }


 
Voilà et donc mon problème c'est que je n'ai rien qui apparait dans ma page quand je teste dans mon navigateur, cliquer sur le bouton interroger ne fait rien (à part l'alerte).
 
L'alerte qui m'envoie la variable mpw marchant bien, j'en déduis que j'ai raté un truc avec la fonction xhr.open, xhr.setRequestHeader ou xhr.send (c'est vrai que send ne sert à rien pour le fichier tg.php, mais j'imagine qu'il ne gène pas non plus et de toute façon le fichier original lui en a bien besoin).
 
Si vous avez une idée sur ce que j'ai fais de travers je suis preneur.
 
Merci d'avance.

Reply

Marsh Posté le 14-07-2011 à 21:25:36   

Reply

Marsh Posté le 17-07-2011 à 07:18:37    

Pourquoi tu renvoi pas la méthode post sur ta page .php pour ensuite la traiter ? Ça te permettra de changer directement le contenu de ta page sans utiliser du activeX (qui marche uniquement sur IE).

 

Au début tu met que si la variable $_POST["master_pw2"] n'est pas reconnu on affiche ta page (la 1ère en haut). Sinon si on trouve la variable, on affiche une page similaire contenant les informations nécessaires (une iframe + mdp ...).
Bonne chance.


Message édité par cetplus le 17-07-2011 à 07:18:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed