2013-08-12 3 views
0

J'ai des problèmes avec une requête vraiment basique à un fichier php d'AJAX. Je cours tout ça dans XAMPP. Ce que j'essaie de faire avec ce code est de faire écho au nom tapé dans la zone de texte une fois que le bouton Soumettre est cliqué et que les résultats seront affichés dans les div "résultats". Je fais cela pour essayer d'éliminer les erreurs dans un autre script et jusqu'à présent cela ne s'est pas très bien passé.Demande AJAX à un fichier php

<html> 


<head> 
<script type="text/javascript"> 
function go() { 
var request; 
if(window.XMLHttpRequest) { 
request = new XMLHttpRequest(); 

} 
    else { 

    request = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    var uname = document.getElementById("name").value; 
    request.onreadystatechange= function() { 
     if(request.readyState == 4) { 

      document.getElementById("result").innerHTML = response.Text; 


      } 


     } 
     url = "win.php?name="+uname; 
     request.open("GET", url, true); 
     request.send(); 
    } 
</script> 

    </head> 

<body> 
    Name:<input type="textbox" name="jesus" id="name" />  
    <input type="button" value="Submit" onlick="go()" /> 
    <div id ="result"> Result:</div> 
    </body> 
    </html> 



<?php 


    $name = $_GET['name']; 
    echo $name; 





    ?> 

Répondre

0

Vous ne disposez pas d'un objet appelé response, vous êtes à la recherche de la propriété responseText sur l'objet request.

document.getElementById("result").innerHTML = request.responseText; 

aussi:

  1. éviter d'utiliser globals
  2. ne pas envoyer votre requête HTTP avant la div cible existe, vous courez le risque de ne pas encore en vigueur lorsque la réponse est retour
  3. Vous devriez probablement vérifier que l'état HTTP de la réponse est 200 (OK) et qu'il est terminé (readyState 4).
  4. Ne mettez pas d'entrée utilisateur brute dans les URL, échapper à encodeURIComponent premier
+0

J'ai mis en œuvre la plupart des changements ci-dessus, mais il ne fonctionne toujours pas. Aussi devrais-je utiliser le "encodeURIComponent" dans la ligne "var uname = document.getElementById (encoceURIComponent (" name ")). Value;"? Aussi, devrais-je le décoder dans le script php et comment le faire si j'en ai besoin? serais-je capable d'utiliser la ligne "decodeURIComponent()" pour le décoder en php? – user2674660

+0

'" win.php? Name = "+ encoderURIComponent (uname);' – Quentin

+0

Oui, mais votre bibliothèque de traitement de formulaire côté serveur (en PHP qui est la chose derrière les scènes qui peuplent '$ _GET' et amis) le fera automatiquement donc vous n'avez pas besoin de le faire vous-même. – Quentin

0

utilisation que document.getElementById("result").innerHTML = response.responseText;