Ajax

layeures Messages postés 310 Statut Membre -  
layeures Messages postés 310 Statut Membre -
Bonjour,

j ai reussie a faire un script qui envoie les donnee grace au code ajax
mes probleme dans la deuxieme page je n arrive pas a recuperer les variable envoyer
voici le code

:::::::::::::::::::
<script type='text/JavaScript'>
function go(){

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;
}
var url = "test.php";
var dede = "ca marche";
var pos="variable1=coco&variable2=coco2";
xhr_object.open("POST", url, false);
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");
xhr_object.send(pos);

if(xhr_object.readyState == 4 && xhr_object.status == 200){
alert("Requête effectuée !");
alert(xhr_object.responseText);
}
else {

alert("Requête NON effectuée !");
}
}
</script>
//////////////////////////////
test.php
***************
<?php

$az = $_POST['variable1'];
echo $az;
?>

merci de votre aide
MERCI INFINIMENT DE VOTRE AIDE

20 réponses

Alain_42 Messages postés 5413 Statut Membre 894
 
Essayes comme ça:

tu devrait au moins avoir la boite d'alerte Data envoyée: .....

<script type='text/JavaScript'>
function go(){

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;
	}
	var url = "test.php";
	var dede = "ca marche";
	var pos="variable1=coco&variable2=coco2";
	//xhr_object.open("POST", url, false);
	xhr_object.open("POST", url, true);
	//xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");
	xhr_object.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	alert ("Data envoyées: "+pos);
	xhr_object.send(pos);

	if(xhr_object.readyState == 4 && xhr_object.status == 200){
		alert("Requête effectuée !");
		alert(xhr_object.responseText);
	}else {

		alert("Requête NON effectuée !");
	}
}
</script>
0
layeures Messages postés 310 Statut Membre 3
 
je vai essayer est ca ne marche pas
0
layeures Messages postés 310 Statut Membre 3
 
quand je mes xhr_object.open("POST", url, true);
ca m affiche requete non effectue
donc je les mis a false
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Si mis à TRUE , l'exécution de la fonction JavaScript se poursuivra en attendant l'arrivée de la réponse du serveur.
Si mis à FALSE alors synchrone(bloquant), sans réponse le script est bloqué !


la reponse que tu as est celle de la condition:

if(xhr_object.readyState == 4 && xhr_object.status == 200){ non execiutée

donc la requette part bien mais tu n'as pas ma réponse

ton script php est bien dans le même dossier que ta page qui contient le script ajax ?

as tu modifié l'autre ligne ('content type ...


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
layeures Messages postés 310 Statut Membre 3
 
j ai fait exatement comme tu me la dit est ca ne marche pas
les deux fichier ce trouve dans le meme dossier
je ne comprend rien.
0
layeures Messages postés 310 Statut Membre 3
 
ca me mes requete non effectuer et la variable ne s affiche pas
0
Alain_42 Messages postés 5413 Statut Membre 894
 
comme ça ça marche

attention il ya un ordre a respecter previosn traitement d ela réponse avant de faire l'envoi, ensuite j'ai modifie un peu l'initialisationn de la request et séparé la fonction traitement de la réponse

chez moi ça marche ainsi:

<script type='text/JavaScript'>
function go(){

var xhr_object = false;

	//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            xhr_object = new XMLHttpRequest();
            if (xhr_object.overrideMimeType) {
                xhr_object.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
            }
        } else if (window.ActiveXObject) { // IE
            try {
                xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!xhr_object) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
		  
	var url = "test.php";
	var dede = "ca marche";
	var pos="variable1=coco&variable2=coco2";
//cette ligne avant la partie open et send !!
	xhr_object.onreadystatechange = function() {traitementReponse(xhr_object); }

	xhr_object.open("POST", url, true);
	xhr_object.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	alert ("Data envoyées: "+pos);

	xhr_object.send(pos);
}
////fonction traitement de la réponse
function traitementReponse(xhr_object) {
	var affich="";
	if (xhr_object.readyState == 4) {
		if (xhr_object.status == 200) {
					// cas avec reponse de PHP en mode texte:
			// elements reçus
			var reponse=xhr_object.responseText;
			alert(reponse);
				
		} 
		else {
                alert('Un problème est survenu avec la requête.');
        }
    }
}
</script>
<a href="javascript:go();">essai</a>
0
layeures Messages postés 310 Statut Membre 3
 
merci de l'interet que tu porte a mon probleme
pour le moment je ne peu pas continue a rester devant mon ordi car sinon je vait devenir fou
alors si t est d'acord rendez vous demain pour resoudre le probleme

dit moi ta variable php $POST[var] elle s'affiche dans ta deuxieme page
0
layeures Messages postés 310 Statut Membre 3
 
salut

j ai tester un deuxieme foie le code est ca ne marche pas.
0
layeures Messages postés 310 Statut Membre 3
 
je trouve ca bizarre quand je execute le code ajax il me mes

Détails de l’erreur de la page Web

Agent utilisateur : Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; InfoPath.2)
Horodateur : Tue, 29 Sep 2009 08:00:46 UTC


Message : Accès refusé.

Ligne : 38
Caractère : 2
Code : 0
URI : file:///C:/wamp/www/ajax%20test/Copie%20de%20ajax.html


Message : Accès refusé.

Ligne : 38
Caractère : 2
Code : 0
URI : file:///C:/wamp/www/ajax%20test/Copie%20de%20ajax.html


Message : Accès refusé.

Ligne : 38
Caractère : 2
Code : 0
URI : file:///C:/wamp/www/ajax%20test/Copie%20de%20ajax.html
0
Alain_42 Messages postés 5413 Statut Membre 894
 
C'est normal sur IE si pour lancer une page html tu cliques sur le nom dans l'explorateur, IE bloque l'accès à javascript , tu dois avoir une fenêtre ou qq chose pour autoriser le script

pour faire tes test il te faut un serveur, pour pouvoir ensuite executer le php

si tu ne l'as pas, télécharges et installes wamp sur ton PC

et pour test un script tu tapes dans la barre d'adresse de ton navigateur

http://127.0.0.1/nom_de_ton_script.html

wamp doit être lancé avant bien sur
0
layeures Messages postés 310 Statut Membre 3
 
salut
c est ce que je fessai debut le debut j'executer la page sur mon serveur local avec WAMPSERVEUR
puis j ai voulu teste diretement sans le serveur est ca ma mis erreur acces refuser.
mes quand j'excuter la page coter serveur ca ne m'affiche pas ce message mes ca ne marche pas quand meme car la variable n etait pas envoyer car elle ne s'affiche pas dans la deuxieme page.
0
layeures Messages postés 310 Statut Membre 3
 
le probleme vien peu etre de la configuration de mon serveur ?????????????
0
Alain_42 Messages postés 5413 Statut Membre 894
 
la variable n etait pas envoyer car elle ne s'affiche pas dans la deuxieme page.

Le principe d'Ajax est justement de ne pas recharger la page donc pas de deuxième page

Principe:
- dans une page 1 html par un lien ou un bouton tu lances le script javascript/Ajax
- ce dernier appelle en "arriere plan" sans rechargement de la page un script php sur le serveur
- en lui passsant un ou plusieurs parametres (variable1 variable2 dans ton cas)
- le script php récupere ces valeurs
- fait un traitement (dans ton cas juste un echo de la valeur reçue)
- lorsque le navigateur reçoit la réponse , le script javascript/Ajax par xhlr_object.onreadystaechange=
lance une fonction qui traite la réponse

dans ton cas c'est juste une boite d'alert donc une boite de dialogue javascript qui te dit la réponse, mais tu peux faire écrire la réponse a un endroit précis de la page1, dans un <div id="reponse"></div>
par

document.GetElementById('reponse').innerHTML=xhr_object.responseText;
0
layeures Messages postés 310 Statut Membre 3
 
moi ce que je veu c est envoyer la var a la deuxieme page est l'afficher avec echo $_POST['variable1'];
ce probleme va me rendre fou
0
layeures Messages postés 310 Statut Membre 3
 
je ten suplie par pitie aide moi
pitie pitie
0
Alain_42 Messages postés 5413 Statut Membre 894
 
alors si tu veux envoyer une valeur a une autre page, tu n'as pas besoin de Ajax
il te faut un formulaire pour pouvoir le faire en méthode POST

page1.html
<html>
<form name="form1" method="post" action="test.php">
<input type="text" name="variable1" value="coco"><br />
<input type="submit" name="envoyer" value="Vers test"><br />


</form>
</html>


et test.php
<?php

$az = $_POST['variable1'];
echo 'La valeur reçue est :'.$az;
?> 
0
layeures Messages postés 310 Statut Membre 3
 
le probleme c est que je suis obliger d'utiliser ajax car avec ajax il m affiche une reponse si les donnee ont etait envoyer ou pas et en php ca c est pas possible enfin je croie.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
La je ne te suis pas trop, je ne vois pas ce que tu cherches à faire

- en utilisant AJAX, on envoie les données et on affiche la réponse du script php dans la m^me page sans avoir besion d'afficher une autre page


- en php on envoie les données vers un script php celui de action="...." du formulaire et ce script charge une nouvelle page dans laquelle il peut mettre la réponse
si tu fais l'essai avec les bouts de code que je viens de te donner tu verra bien que c'est possible
0
layeures Messages postés 310 Statut Membre 3
 
si je suis interesser par ajax c est que ajax dans la premier page il affiche le resultat des envoie des donnee
alors avec php c est pas possible

ajax dans la premier page affiche si les donnee en etait envoyer
voila pourquoi je me case la tete a essayer de fait un script d'envoie de donnee en ajax et pas php
0