Page 1 sur 1

Probleme avec xhr_object.onreadystatechange = function()

Posté : 08 déc. 2005, 13:01
par Mathieu
Lorsque j'execute mon script, il ne passe jamais dans cette instruction.

le js :

Code : Tout sélectionner

function pubDepub(id,etud,action) { 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..."); var method = "GET"; var filename = "requete-ajax.php"; var data = null; data = "?id="+id+"&etud="+etud+"&action="+action; xhr_object.open(method, filename+data, true); xhr_object.onreadystatechange = function() { alert('bli'); if(xhr_object.readyState == 4) { var tmp = xhr_object.responseText; alert(tmp); } } }
le php :
<?
header('Content-type: text/html; charset=iso-8859-1');
require('../connexion.class.php');

$c = new Connexion();

if( $c->isConnected() )
{
	if( isset($_GET['action']) && !empty($_GET['action']) && isset($_GET['id']) && !empty($_GET['id']) && isset($_GET['etud']) && !empty($_GET['etud']))
	{
		$id_cv = $_GET['id'];
		$id_etud = $_GET['etud'];

		if(strcmp($_GET['action'],"Publier") == 0)
		{
			$sql = "UPDATE cv SET publie=1 WHERE id_cv=$id_cv;";
			$c->executeQuery($sql);
			echo " CV Publié.";
		}
		elseif(strcmp($_GET['action'],"Depublier") == 0)
		{
			$sql = "UPDATE cv SET publie=0 WHERE id_cv=$id_cv;";
			$c->executeQuery($sql);
			echo " CV Dépublié.";
		}
	}
	else
		echo "Aucune données en GET";
}
else
	echo "Problème de connexion";
?>
Je ne sais pas de ou peux provenir le problème, d'avance merci de votre aide

Posté : 09 déc. 2005, 08:51
par jeff
salut
bon apparement c'est un probleme de js
est ce que la fonction est bien appelé?
teste tu les etat de onreadystatechange

Code : Tout sélectionner

if(xhr_object.readyState == 4) { var tmp = xhr_object.responseText; alert(tmp); } else{ alert(xhr_object.readyState);

Posté : 18 janv. 2006, 22:45
par Invité
Bonjour,

J'ai exactement le même problème, mais uniquement sous firefox. La fonction du onreadystatechange n'est pas exécutée. Le PHP est bien appelé, fonctionne bien, mais je ne peux pas récupérer son résultat à cause de ça.

Posté : 08 févr. 2006, 16:47
par Invité
lol pareil :) sa fait une que je cherche :/

Posté : 15 mai 2006, 09:22
par Magaly
Bonjour,

J'ai exactement le même problème, mais uniquement sous firefox. La fonction du onreadystatechange n'est pas exécutée. Le PHP est bien appelé, fonctionne bien, mais je ne peux pas récupérer son résultat à cause de ça.
Salut,

Avez vous trouvé le problème? Car j'ai le même soucis, voici mon code :

Code : Tout sélectionner

function envoi_donnees(data, page, method, affichage) { var xhr_object = null; if(window.XMLHttpRequest) { ///////////////////////////////////// Firefox et autres xhr_object = new XMLHttpRequest(); } else if(window.ActiveXObject){ /////////////////////////////////// Internet Explorer try { xhr_object = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); } } else { /////////////////////////////////// XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr_object = false; } //définition de l'endroit d'affichage: if (document.getElementById){ var content = document.getElementById(affichage); } else if (document.all){ var content = document.all[affichage].value; } else if (document.layers){ var content = document.layers[affichage].value; } content.style.display = "block"; if(data == 'null'){ // Ouverture du fichier sélectionné: xhr_object.open(method, page); } else { // Ouverture du fichier xhr_object.open(method, page+"?"+data); } xhr_object.onreadystatechange = function anonymous() { alert(xhr_object.readyState + ' ' + xhr_object.status); if (xhr_object.readyState == 4 && xhr_object.status == 200){ content.innerHTML = xhr_object.responseText ; } } if(method == "GET"){ xhr_object.send(null); } else if(method == "POST"){ xhr_object.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr_object.send(data); }//fin elseif }

une fonction qui marche

Posté : 20 mai 2006, 18:29
par salimx
Bon, j'ai décidé d'être cool aujourd'hui, cette fonction marche nickel, aussi bien sous firefox, ie, opera, safari, icab3, omniweb,flock,mozilla et camino, pour peu que je les ai tous testé... bref, voici la fonction, et pour mettre des params, cest dans url préalablement

Code : Tout sélectionner

function doGET(url,id) { var xhr_object = null; var position = id; if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest(); else if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); xhr_object.open("GET", url, true); xhr_object.onreadystatechange = function(){ if ( xhr_object.readyState == 4 ) { document.getElementById(position).innerHTML = xhr_object.responseText; } } xhr_object.send(null); }
mon site c'est salimx.com et ca marche dessus nickel

Posté : 31 mai 2006, 22:04
par Invité
Bonjour,

J'ai je pense le même problème que vous.

Lors d'un appel à une fonction utilisant XmlHttpRequest, xhr_object.responseText ne fonctionne pas.
Dans certains cas seulement, car mes appels à XmlHttpRequest fonctionnent la plupart du temps.

En fait, tout dépend aussi de la version du moteur XML appelé et installé sur la machine.

Si je fais seulement ceci pour créer l'objet XmlHttpRequest :

Code : Tout sélectionner

xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
... J'ai des problèmes sur une de mes machines où j'ai msxml2.dll et msxml3.dll d'installé. Sur une autre machine, j'ai msxml3.dll et msxml6.dll d'installé et là pas de problème.

Si par contre je fais :

Code : Tout sélectionner

try { xhr_object = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }
... je n'ai plus de problème sur mes 2 machines, mais j'ai une 3ème machine qui elle pose toujours problème...


Quelqu'un sait-il si la version de msxml installée peut poser des problèmes dans certains cas ? Et quand msxml3.dll s'est généralisé sur les postes ? (par exemple avec Windows 2000 SP1 ou SP2 ou SP3...)

Merci ! :wink:

Posté : 03 juin 2006, 15:23
par Invité
C'est moi qui ai envoyé le dernier message et j'ai trouvé la solution à mon problème...

Sur windows 2000, par défaut il y a msxml2.5.dll.
Or, cette version à un petit bug qui fait que ResponseText n'est pas disponible lorsque son contenu est "0" ou "1" ou peut être un autre entier.


ainsi, si on appelle le serveur à travers :

Code : Tout sélectionner

xhr_object.open("GET", mapage.php, true);
et que mapage.php contient uniquement

Code : Tout sélectionner

echo(1);
on peut toujours attendre la réponse...


L'astuce est de faire echo("0001"); à la place de echo(1); et là ça marche !

ensuite, il suffit juste de faire un parseInt(xhr_object.responseText);


J'espère que ça répond aussi aux problèmes des autres... :wink: