[AJAX/PHP] - récupération de paramètres GET

Fermé
TheLostMind Messages postés 6 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 29 novembre 2008 - 27 nov. 2008 à 20:30
TheLostMind Messages postés 6 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 29 novembre 2008 - 29 nov. 2008 à 20:57
Bonjour forumeurs,

J'ai un petit problème pour récupérer des paramètres passés par GET via un objet XMLHttpRequest.
Je m'explique :
j'ai dans un page PHP "index.php" une image telle que :

 
<form name="frm" id="frm" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>" >
//code zappé
echo "<img id=\"$name\" src=\"$srcImg\" onclick=\"return ValidImg($id,$var1,$var2);\">" ;


La fonction javascript ValidImg se trouve dans un autre fichier et est de la forme :

function ValidImg(id,var1,var2)
{
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request")
		return
	}
	else {
			var url="index.php";
			url = url + "?id=" + id + "&var1=" + var1 + "&var2=" + var2;
			xmlHttp.open('GET', url, true);
			xmlHttp.send(null);
			
			alert("Alert"); //cet Alert se déclenche bien
			document.getElementById(id).src="blabla";
			document.getElementById(var1).innerHTML = "blabla";
	}
}



avec la fonction GetXmlHttpObject() suivante :

function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}



Puis, j'aimerais récupérer les paramètres var1 et var2 de la requête GET de la fonction ValidImg() dans ma page PHP "index.php".
Pour cela, je fais ceci au début de la page "index.php" :

if ((isset($_GET['var1'])) && (isset($_GET['var2']))) {
	echo "passage de parametres OK";
        //appel d'une fonction PHP avec les paramètres var1 et var2
}


Mon problème : je n'arrive pas à passer dans cette boucle. Les paramètres var1 et var2 ne sont jamais "settés".

Sur Firebug, je ne vois aucune requête GET du type index.php?id=id&var1=1&var2=2

D'où vient mon erreur ?

Merci beaucoup pour votre aide.

TheLostMind.
A voir également:

3 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 nov. 2008 à 20:40
Bonsoir,

2 choses:

il te manque un bout de code dans ta foonction Ajax, la partie test et traitement si la réponse et arrivée

regarde bien les tutos il faut:

http_request.onreadystatechange = function() { 

if (http_request.readyState == 4) {
		if (http_request.status == 200) {

etc...
la tu ecris dans ta page

}

}


}


ensuite si tes echo du script php n'apparaissent pas directement dans ta page, il faut mettre une alert sur la réponse dans la fonction javascript
1
TheLostMind Messages postés 6 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 29 novembre 2008
27 nov. 2008 à 21:27
Re-bonjour et merci pour cette réponse rapide.
J'ai fait les modifications conseillées (et j'ai relu les tuto AJAX) mais rien n'y change. J'ai toujours le même problème. Voici les modifs que j'ai fait dans le code javascript :

function ValidImg(id,var1,var2)
{
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request")
		return
	}
	else {
		alert("on rentre ds la boucle"); //ça marche
		xmlHttp.onreadystatechange=ReadyValidImg(var1,var2) ;
		var url="index.php";
		url=url+"?id="+id+"&var1="+var1+"&var2="+var2;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
}

function ReadyValidImg(var1,var2) {
	if (xmlHttp.readyState==4) {
		if (http_request.status == 200) { 
		alert("on rentre ds readyState"); //ne marche pas
		document.getElementById(var1).src="blabla";
		document.getElementById(var2).innerHTML = "blabla"
		}
	}
}



J'ai toujours le même problème : le requete GET ne se fait pas. (elle devrait pourtant se faire même si la méthode xmlHttp.onreadystatechange n'est pas éxécutée ?).
Toujours aucune trace dans FireBug de cette requete GET.

En ce qui concerne mon echo sur la page "index.php", il s'affiche bien dans la page. Je ne pense pas que le problème vienne de là.

Merci encore.

TheLostMind.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 nov. 2008 à 22:45
xmlHttp.onreadystatechange=ReadyValidImg(var1,var2) ;


il faut:

xmlHttp.onreadystatechange= function () { ReadyValidImg(var1,var2) } ;//affectation fonction appelée qd on recevra la reponse


perso je n'utilise pas la methode GET mais POST

........
// lancement de la requete
		http_request.open('POST', url, true);
		//changer le type MIME de la requête pour envoyer des données avec la méthode POST ,  !!!! cette ligne doit etre absolument apres http_request.open('POST'....
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		
		data=id="+id+"&var1="+var1+"&var2="+var2;
        http_request.send(data);



et bien sur dans ton script php tu récupères par $_POST au lieu de $_GET
0
TheLostMind Messages postés 6 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 29 novembre 2008 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
28 nov. 2008 à 01:01
Merci beaucoup Alain pour ton aide... on avance. Malheureusement, je n'arrive toujours pas à récupérer ces paramètres var1 et var 2. Voici les modifs sur les fonctions Js que j'ai fait suite à ton post :

function ValidImg(id,var1,var2)
{
  xmlHttp=GetXmlHttpObject()
  if (xmlHttp==null)
  {
	alert ("Browser does not support HTTP Request")
	return
  }
  else {
	xmlHttp.onreadystatechange= function () { ReadyValidImg(var1,var2) } ;
		
	var url="descriptionSpectacles.php";
		
	// lancement de la requete
	xmlHttp.open('POST', url, true);
	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	var data="id="+id+"&c="+c+"&l="+l;
	xmlHttp.send(data);
	}
}

function ReadyValidImg(var1,var2) {
	if (xmlHttp.readyState==4) {
		alert("Alert"); //marche
		document.getElementById(var1).src="Blabla";
		document.getElementById(var2).innerHTML = "blabla";
	}
}



Et voici, pour rappel, comment je récupère mes paramètres var1 et var2 de la requete POST :

		if ((isset($_POST['var1'])) && (isset($_POST['var2']))) {
			echo "passage de parametres par post OK";
			fctPHP(var1,var2);
		}


Mon pb : je ne passe pas dans cette boucle.
Dans FireBug, je vois la requete POST avec les bonnes variables (var1 et var2) et avec un statut "200 OK". Pourquoi ces variables ne passent pas la condition "isset" ??

Pour info, ce code PHP est situé au début de la page (avant l'appel de la fonction ValidImg par le onclick). Est-ce que cela change qqchose ?

Merci par avance.

TheLostMind.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > TheLostMind Messages postés 6 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 29 novembre 2008
28 nov. 2008 à 09:29
Bonjour,

// lancement de la requete
xmlHttp.open('POST', url, true);


url n'est pas définie

il faut soit que tu passes l'url du script php appelé en argument à la fonction, soit que tu le mettes en "dur" dans ta fonction
0
TheLostMind Messages postés 6 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 29 novembre 2008 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
28 nov. 2008 à 15:59
Bonjour,

j'avais défini l'url juste au dessus du lancement de la requete :

xmlHttp.onreadystatechange= function () { ReadyValidImg(var1,var2) } ;
		
  var url="descriptionSpectacles.php";
		
  // lancement de la requete
  xmlHttp.open('POST', url, true);
  xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


Le problème reste là.

Merci pour votre aide.

TheLostMind
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 nov. 2008 à 20:45
Utilises tu la console d'erreur du menu Outils de FireFox ?

quel mesage d'erreur te donnes -t-elle ?
0
TheLostMind Messages postés 6 Date d'inscription jeudi 27 novembre 2008 Statut Membre Dernière intervention 29 novembre 2008
29 nov. 2008 à 20:57
Non, je n'utilisais pas cette console d'erreur...je viens de découvrir son existence. Je vais y jeter un coup d'oeil plus souvent maintenant. Merci !

Pour le pb, j'ai décidé d'abandonner le traitement en AJAX et de le faire en simple PHP (moins de fonctionnalités mais je "maîtrise" mieux) parce que ma deadline de projet s'approche dangereusement.

Merci pour ton aide Alain. Je reviendrai certainement au problème quand je n'aurai plus de contrainte de temps.

TheLostMind.
0