Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# problème callback avec xmlhttprequest

Envoyé par : rozwel

Date : 09/05/2005 15:46

Bon mon problème n'a pas grand chose à voir avec XUL mais bon comme AJAX est une idée un peu neuve c'est pas évident de trouver des gens qui font joujou avec ce genre de choses donc je tente ma chance où Google m'indique qu'il y a du "gens qui connait".

En fait perso j'utilise l'objet XmlHttpRequest pour charger une page par régions. Le principe c'est que ma page est composée de 4 régions : un header, un menu, un contenu et un pied. Un clic sur un élément du menu appelle une fonction reloadRegion("id de la région") au lieu d'un simple lien vers une autre page.

Cette fonction reloadRegion utilise un objet XmlHttpRequest (en variable globale) et envoie une requête vers un script PHP qui ne retourne que le contenu de la région à recharger comme ça dans l'idéal rien d'autre ne bouge et le strict nécessaire est mis à jour. Le problème c'est que dans le callback avec ce qui est sensé contenir la réponse j'ai... RIEN ! Nada walou keutchi ! (c'est alert qui a dit). Et j'ai essayé le coup du flush dans le script php ça n'a rien changé.

Alors déjà voilà la fonction reloadRegion :

function reloadRegion(region,section,part,language){
if(xmlhttp){
	var loading_artifact;
	var url = "index_ajax.php5?region="+region+"&section="+section+"&part="+part+"&language="+language;
	alert(url);
	loadFragmentInToElement(url,region+"-container",'<p>chargement...</p>');
}
else{
	alert("Impossible d'accéder à la requete");
}
}

Ensuite voici la fonction magique loadFragmentInToElement

function loadFragmentInToElement(fragment_url, element_id, loading_artifact) {
   var element = document.getElementById(element_id);
	element.innerHTML = loading_artifact;
   xmlhttp.open("GET", fragment_url, true);
   xmlhttp.onreadystatechange = function() {
       if (xmlhttp.readyState == 4) {// && xmlhttp.status == 200) {
					alert(xmlhttp.responseText);
           element.innerHTML = xmlhttp.responseText;
       }
   }
   xmlhttp.send(null);
}

Vous remarquerez que j'ai zappé le coup de la vérification du statut pour l'instant le temps de réussir à obtenir une réponse à ma requête. La variable globale xmlhttp est initialisée au chargement du script et j'ai testé la requête php à la main les données sont bien retournées nickel.

Pourtant rien à faire, le alert(xmlhttp.responseText); est vide et si je décommente le xmlhttpstatus j'obtiens cette fameuse erreur comme quoi l'objet n'est pas disponible.

Quelqu'un aurait-il une idée de ce qui pose problème. Merci beaucoup par avance.

rozwel

# Re: problème callback avec xmlhttprequest

Envoyé par : laurentj

Date : 09/05/2005 15:57

J'ouvre une parenthèse

Rien à voir avec ton probléme, mais quand tu débarques sur un forum pour y poser une nouvelle question, il est préférable que tu n'aille pas répondre à une question existante, mais vraiment créer une nouvelle discussion. Ça évite de "polluer" les discussions, et ça évite aux modérateurs comme moi d'avoir à bouger les messages. merci.

Conçernant Ajax : ce n'est pas pour toi, mais ça m'enerve un peu d'entendre parler de ce terme marketing à la con, alors que xmlhttprequest existe depuis bien longtemps. Il se trouve que les développeurs web se reveillent enfin et découvrent, oh miracle, un truc qu'ils avaient dédaignés depuis des années... Maintenant ils disent tous que c'est super..

parenthèse fermée.

Pour ton problème même, j'en sais rien là tout de suite. Regarde sur le wiki de xulfr pour savoir comment bien utiliser xmlHttpRequest.

Sinon je pense que ton url est mal formée. Que viennent faire ces &amp; dans ton url ? Il ne faut mettre ça que quand on met ce genre de requête en dure dans du html ou xml.

Bon, à part, ça, utiliser innerHTML, c'est crados vis à vis du DOM (innerHTML ne fait pas parti des specs DOM, n'est pas un attribut standard de l'objet document). Et ça ne fonctionnera pas avec du XHTML.

# Re: problème callback avec xmlhttprequest

Envoyé par : Utilisateur anonyme

Date : 30/05/2005 15:02

Dans la fonction de callback : 'element' n'existe pas, il ne fait pas reference a la variable 'element' declare plus haut dans le code. Le probleme doit etre le meme pour la variable xmlrequest. si tu veux avoir object xmlrequest, utilise 'this', normalement dans la fonction onreadystatechange, 'this' fait reference a l'object xmlrequest.

un peu tard la reponse ;)

Thomas

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.