2010-11-21 11 views
-1

J'ai une forme simple:
<form id="formTest" name="formTest" action="" method="get">
<input id="txtPostcode" name="Postcode" type="text" class="txtBoxSmall" /> <input type="button" name="SubmitTheForm" id="btnSubmit" onClick="TestAjax()" value="submit" />
</form>
Poster PHP ne fonctionne pas avec l'Ajax

Mon code Javascript est:

function TestAjax(){ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
    { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 

     } 
    }; 
    xmlhttp.open("GET","autocomplete.php?value1=aaaaa&value2=fffff",true); 
    xmlhttp.send(); 
} 

Mon problème est que dans le fichier php autocomplete.php je ne peux pas accéder à l'élément txtPostcode comme ça:

$postcodetext = $_GET[Postcode]; 

Mais si je me débarrasser de la fonction javascript sur le bouton Envoyer, et ajoutez action = « autocomplete.php » à la balise forme qu'elle fonctionnera, mais bien sûr, il n'ajaxed. Quelqu'un peut-il me dire pourquoi je ne peux pas obtenir des valeurs de $ _GET [Code postal] en ajaxing ?? Je sais que je peux juste passer la valeur du txtPostcode dans l'URL, mais je ne veux pas le faire de cette façon, y at-il quelque chose que je peux faire je peux accéder à la zone de texte via l'appel $ _GET [Postcode] en PHP? ?

Merci.

+1

À l'avenir, il serait utile de formater votre code lorsque vous posez des questions/réponses/commentaires. Lisez l'aide ici: http://stackoverflow.com/editing-help. Notez que vous pouvez modifier vos posts au format après votre publication. –

+1

Ce n'est pas un POST, c'est un GET. – NickFitz

Répondre

1

Vous devez modifier cette ligne:

xmlhttp.open("GET","autocomplete.php?value1=aaaaa&value2=fffff",true); 

pour inclure toutes les valeurs que vous souhaitez obtenir dans $_GET[] en PHP. Vous pouvez faire:

var postcode = document.getElementById('txtPostcode').value; 
xmlhttp.open("GET","autocomplete.php?value1=aaaaa&value2=fffff&Postcode=" + postcode,true); 

et similaire pour toutes les choses supplémentaires que vous souhaitez accéder en PHP.

Je suis entièrement d'accord avec les commentaires ci-dessous - jetez un oeil à jQuery, il va rendre votre vie beaucoup plus facile. Commencez ici par exemple:

+1

Icyrock a raison de corriger votre code, mais à moins d'avoir une bonne raison de ne pas utiliser une librairie javascript, je vous recommande vivement d'utiliser jQuery ou Prototype pour alléger le travail dans Ajax. –

+0

xmlhttp.open ("GET", "..."); va créer une nouvelle requête ajax à la page au lieu de soumettre directement les valeurs du formulaire. – KoolKabin

+0

Merci pour l'aide les gars. C'est la première fois que j'utilise un forum, vous êtes rapides à répondre, à applaudir. – Nathan