2012-07-28 2 views
-1

Je veux tirer une requête AJAX sur le clic d'un bouton, mais je suis incapable de le déclencher sur le back-end.Demande AJAX en utilisant PHP

index.php:

<html> 
    <head> 
     <script type="text/javascript"> 
      var req = new XMLHttpRequest(); 
      function send1() 
      { 
       req.open("GET", "process.php?q=hello", true); 
       req.send();   
       alert(req.responseText);  
      } 
     </script> 
    </head>  

    <button onclick=send1()>send</button> 

</html> 

process.php:

<?php 
$new= $_GET['q']; 
echo $new; 
?> 

Cela devrait me donner "bonjour" dans un Alertbox pourquoi il est pas?

+2

apprendre jQuery, ça va vous simplifier la vie! – Sourav

+0

@Sourav: Je suis d'accord, mais pour quelqu'un qui n'a jamais utilisé AJAX auparavant, je pense qu'il serait bénéfique de voir comment tout cela fonctionne "sous le capot" de jQuery avant de l'abstraire. –

+0

@Sourav: Je ne suis pas d'accord. Apprenez Javascript, puis apprenez comment ajax fonctionne et * ensuite * apprenez jquery (ou une autre bibliothèque). Il y a trop de gens qui pensent à cette chose comme une série d'incantations magiques et qui n'ont aucune idée de ce qui se passe à l'intérieur. –

Répondre

7

Le premier A dans AJAX signifie "Asynchrone". Ce que vous devez faire est d'écouter le readyState pour changer:

req.open(...); 
req.onreadystatechange = function() { 
    if(this.readyState == 4) { 
     if(this.status == 200) alert(this.responseText); 
     else alert("HTTP error "+this.status+" "+this.statusText); 
    } 
}; 
req.send();