Problème AJAX with PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème AJAX with PHP

par Sékiltoyai » 21 mai 2007, 20:56

De rien, bonne chance.

par iut » 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

par Sékiltoyai » 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...

par iut » 21 mai 2007, 17:21

donne moi un exemple concret à lutilisation de cette methode

par Sékiltoyai » 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...

par iut » 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

par Sékiltoyai » 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/

par Ish » 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 !!

par iut » 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

par Sékiltoyai » 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.

par iut » 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

par mere-teresa » 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.

par iut » 21 mai 2007, 15:58

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

par iut » 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>

par iut » 21 mai 2007, 14:08

En gros, je veux remplir un formulaire automatiquement et sans rafraichir ma page (PHP) lorsque je clique sur un élement de ma liste déroulate (avec un onchange() par exemple) ...

Mon code est ma requête fonctionnent bien mais j'ai une erreur au niveau du send (). Je n'arrive pas à récupérer la valeur envoyé par cettefonction dans mon code PHP. Par contre je récupére la valeur dans la fontion onreadychange() dans ma fonction AJAX ....

je bloque à ce niveau .... j'ai l'impression que le send("x="+x) n'envoie rien !!!