Problème AJAX with PHP

iut
Eléphant du PHP | 61 Messages

21 mai 2007, 14:24

exemple d'application TOUT EST DANS LA MEME PAGE ! test.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>

<script>
function fonction (){
		
		//On recupere le nom de la variante sélectionné
		//var liste2 = document.getElementById("liste");
		
		//Recupere le value de la liste deroulante selectionner
[		var nomVar = document.getElementById("liste").value;
		
		//On initialise le XMLHttpRequest
		var xhr_object = null; 
	     
	   if(window.XMLHttpRequest) // Firefox 
	      xhr_object = new XMLHttpRequest(); 
	   else if(window.ActiveXObject) // Internet Explorer 
	      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.onreadystatechange = function() {

		if(xhr_object.readyState == 1) {
			xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

			alert(nomVar); <- AFFICHE BIEN LA VALEUR
			
xhr_object.send("nomVar="+nomVar); 
		}
		else if(xhr_object.readyState == 4) {
			eval(xhr_object.responseText);
			
		}
	}
			xhr_object.open("POST","test.php",true);
}

</script>
</head>
<html><body>

<?if (isset($_POST["nomVar"])){
echo $_POST["nomVar"];   <---- C a ce niveau que je narrive pas a recup la valeur pourtant envoyé par la fonction send()
}?>

<select name="liste" id="liste" onChange='fonction()'>
<option value="toto">toto</option>
<option value="titi">titi</option>
</select></body></html>


iut
Eléphant du PHP | 61 Messages

21 mai 2007, 15:58

Je suis en attente de réponse urgemment .(^_^).

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

21 mai 2007, 16:00

Heu c'est pas $_POST['liste'] ? Parce que le tableau PHP qui récupère les formulaires s'appuie sur les attributs name des balises input, option, textarea, etc. pour être rempli.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

iut
Eléphant du PHP | 61 Messages

21 mai 2007, 16:17

mais la c CA que je ve recuperer:

xhr_object.send("nomVar="+nomVar);

le NOMVAR (qui est la value de l'option selectionné) et pas autre chose.


Le fait de mettre ca

Code : Tout sélectionner

xhr_object.open("POST","test.php",true);<- fait reference a la meme page xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //on envoie le parametre dans lurl xhr_object.send("nomVar="+nomVar);//Avec cette fonction je suis pas censé mettre en POST le nomVar? et pouvoir le recupere par la suite grace a la methode $_POST ["nomVar"] Parce que c ca que je ve reussir a faire

ViPHP
ViPHP | 5924 Messages

21 mai 2007, 16:23

Dans ton script PHP tu récupères ta variable avec $_POST['nomVar'] si c'est ce que tu cherches à savoir.

iut
Eléphant du PHP | 61 Messages

21 mai 2007, 16:30

Ce serait si facile.....

Essaie de lire les comm precedentes pour comprendre avant de me repondre a la va vite :roll:

Merci

Ish
Eléphant du PHP | 200 Messages

21 mai 2007, 16:36

Je crois que le monsieur veut faire une requête en AJAX et récupérer les valeurs de cette requête pour les mettre dans son formulaire qui n'est que des <input type="text">.

Chaque Input dois correspondre à une colonne de sa requête et sa requête ne va renvoyer qu'un seul résultat.
Lorsqu'il cliquera sur une des valeurs de sa liste déroulante, une requête sera exécuter à coté pour remplir automatiquement ces champs text !!

Apparemment, il a un problème avec le fait d'envoyer la requête en AJAX et de récupérer les élements !!
La vie est faite d'imprevu, et l'imprevu fait la vie
Gardez la peche !!

ViPHP
ViPHP | 5924 Messages

21 mai 2007, 16:43

Ah, c'est récupérer les résultats le problème.
Hé bien il faut utiliser la fin de l'acronyme AJAX : XML.
Si tu n'as qu'un seul résultat, tu le renvoies simplement et tu le récupères par

Code : Tout sélectionner

resultat = xhr.responseText;
Si tu en a plusieurs, il faut renvoyer un fichier XML : http://siddh.developpez.com/articles/ajax/

iut
Eléphant du PHP | 61 Messages

21 mai 2007, 16:49

Je renvoit qun seul resultat:

Code : Tout sélectionner

function fonction (nomBase){ //On initialise le XMLHttpRequest var xhr_object = getXhr(); var nomVar = document.getElementById("liste").value; xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) { //Elle est bonne cette condition ou pas parce que j'ai suivi les tutos sachant que je suis novice xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); alert(nomVar); //<- Il me l'affiche xhr_object.send("nomVar="+xhr.responseText); // c'st ici que jutilise ta methode? } } xhr_object.open("POST","test.php?nomBase="+nomBase,true); }
C ce que tu veux que je fasse?

En une phrase pour être encore plus clair:

je veux simplement que la fonction ajax me mette en POST la valeur séléctionné de la liste déroulante ainsi je pourrai lutiliser par la suite dans mon code. :D

ViPHP
ViPHP | 5924 Messages

21 mai 2007, 16:58

??
La méthode responseText, ca sert à récupérer le résultat de l'appel à send, ca ne se passe pas en paramètre.

Ce serait bien que tu explique en francais intelligible où est ton problème...

iut
Eléphant du PHP | 61 Messages

21 mai 2007, 17:21

donne moi un exemple concret à lutilisation de cette methode

ViPHP
ViPHP | 5924 Messages

21 mai 2007, 17:39

<html>
<head>
<script language="Javascript" type="text/javascript">

var xhr_object = null;
if(window.XMLHttpRequest)
{
    xhr_object = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
}
   
function maj()
{
   xhr_object.onreadystatechange = function() { 

        if(xhr_object.readyState == 1)
        { 
            xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
            xhr_object.send(
                  "arg1="+document.getElementById("arg1").value+
                  "&&arg2="+document.getElementById("arg2").value
            );  
        } 
        else if(xhr_object.readyState == 4)
        { 
            document.getElementById("result").value = xhr_object.responseText;             
        }
        xhr_object.open("POST","add.php",true);
    
    }
}
             
</script>
</head>
<body>
<input type="text" size="3" id="arg1" value="0" onChange="maj()" />
<input type="text" size="3" id="arg2" value="0" onChange="maj()" />
<input type="text" size="5" id="arg3" value="0" />
</body>
</html>
Et dans add.php :
<?php

$arg1 = isset($_POST['arg1'])?intval($_POST['arg1']):0;
$arg2 = isset($_POST['arg2'])?intval($_POST['arg2']):0;

echo ($arg1+$arg2);

?>
C'est un exemple, je n'ai pas testé, mais moralement c'est bon...

iut
Eléphant du PHP | 61 Messages

21 mai 2007, 20:11

Je viens de comprendre le fonctionnement d'Ajax et jt un peu a louest ^^

Je voulais tout faire sur la meme page alors que cela navait aucun interet

Merci encore de votre aide

ViPHP
ViPHP | 5924 Messages

21 mai 2007, 20:56

De rien, bonne chance.