Envoyé par : Utilisateur anonyme
Date : 03/05/2005 15:35
Bonjour,
je cherche à parser un fichier xml que je recupere d'un serveur distant. pour cela je recupere un XMLDocument grace au princiupe du XMLHttpRequest. Cependant j'ai une erreur que je ne comprend vraiment pas. il semble que ce soit un probleme de privilege mais dans tout les tutoriaux que j'ai trouvé dans la literature, il n'y avait déjà pas besoin de ma premiere ligne de code (voir plus bas). donc je ne sais aps trop..
voici mon code:
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead'); var xhr_object = null; // Firefox xhr_object = new XMLHttpRequest(); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4 && xhr_object.status == 200) { continuation(); } } xhr_object.open("GET", "http://monserveur/trouc.xml"); xhr_object.send(null); function continuation(){ xmldoc = xhr_object.responseXML; txt = xmldoc.getElementsByTagName('ServiceProvider').nodeValue; alert(txt); }
et voici le code d'erreur que j'ai:
Erreur : [Exception... "'Permission refusée d'appeler la méthode XMLDocument.getElementsByTagName' when calling method: [nsIOnReadystatechangeHandler::handleEvent]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "<unknown>" data: no]
si jamais vous avez des indications..
merci d'avances de vos réponses
Envoyé par : T10
Date : 03/05/2005 15:52
Si tu fais
alert(xhr_object.responseText);
tu obtiens quoi? C'est sensé afficher ton flux xml.
Envoyé par : Utilisateur anonyme
Date : 03/05/2005 16:02
oui ça marche ça mais j'aimerais bien pouvoir recueperer l'objet XMLdocument histoire de pouvoir naviguer dans l'arbre. et lorsque je fais getElementsByTagName bah j'ai une erreur. En fait j'ai une erreur à chaque fois que j'essaye d'executer une méthode de l'objet XMLdocument ou bien d'acceder à un attribut.
Envoyé par : T10
Date : 03/05/2005 16:11
je viens de voir nu truc je sais pas si ca viens de la mais je crois que y a une erreur dans le code
txt = xmldoc.getElementsByTagName('ServiceProvider');
retourne une liste donc tu devrais plutot faire
txt = xmldoc.getElementsByTagName('ServiceProvider').item(0).nodeValue;
Envoyé par : Utilisateur anonyme
Date : 03/05/2005 16:19
A priori, je prends je nodeValue donc c bon... et de toute façon j'avais essayé en chopant les items et ça sortait la même erreur, puisque l'erreur dit bien que c'est sur getElementsByTagName qu'il y a un probleme d'acces.
Envoyé par : Utilisateur anonyme
Date : 04/05/2005 14:04
en fait j'ais d'une autre façon: je recupere le xml sous forme de text dans une chaine puis je le parse afin d'obtenir un objet dom dans lequel je peux choper les elements grace à getElementByTagName ou par Id:
xmldoc = xhr_object.responseText; var domoc = (new DOMParser()).parseFromString(xmldoc, "text/xml");
Envoyé par : Utilisateur anonyme
Date : 24/05/2005 09:25
J'ai le mm genre de soucis. D'après ce que j'ai pu lire, cela proviendrait d'un pb de XML mal formé. (pas de tag <?xml...> par exemple). Le parser refuse de lire ton flux pour cette raison.
Envoyé par : Utilisateur anonyme
Date : 19/01/2006 16:39
Hi,
I don't know french so I'll write in english.
I encountered the same error: permission denied etc. etc.
I think the problem is the privilieges enabled by:
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
only have effect while the function from where you call it is still running. When that function finishes, privileges are lost so you can't use some XMLHttpRequest methods.
The solution is: enable the privileges in continuation() too:
function continuation() { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); ... }
Hope it helps, Ranma
Envoyé par : Utilisateur anonyme
Date : 19/01/2006 16:47
By the way, you can assign a function name directly to onreadystatechange property, so so could have done:
xhr_object.onreadystatechange = continuation;
and change continuation() this way (privileges "patch" included!):
function continuation(){ if(xhr_object.readyState == 4 && xhr_object.status == 200) { // Enable privileges netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); xmldoc = xhr_object.responseXML; txt = xmldoc.getElementsByTagName('ServiceProvider').nodeValue; alert(txt); } }
Envoyé par : hhf
Date : 19/01/2006 20:04
heu moi je dis il manque un truc fais ceci et ca marchera :
xmldoc = xhr_object.responseXML.documentElement;
Et la ho miracle ca marche....
En esperant que la ca marche ...LOL
Entre nous, c'est un peu la loose que personne n'est vu l'erreur.
Envoyé par : Utilisateur anonyme
Date : 06/03/2006 11:29
Petite réponse pour hhf
Entre nous, c'est un peu la loose que personne n'est vu l'erreur
Arréte de te la péter, t'es là pour aider pour pour critiquer!!
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.