IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Erreur nsIXMLHttpRequest.status 0x80040111 (NS_ERROR_NOT_AVAILABLE)


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut [AJAX] Erreur nsIXMLHttpRequest.status 0x80040111 (NS_ERROR_NOT_AVAILABLE)
    Bonjour !

    Après une recherche sur le forum et sur Google, je me résous à vous soumettre mon problème.

    J'essaie de mettre au point une fonction JS permettant la mise à jour d'une liste d'un formulaire A à partir de données saisies dans le formulaire B d'une autre fenêtre F2.
    Lorsque le formulaire B est validé, la fenêtre F2 est fermée en appelant une fonction de mise à jour dans la première fenêtre (F1), retrouverEntree().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    function retrouverEntree(ClefTable) {
    	// Initialisation XHR et parametres d'appels
    	var xhr = initialiserXMLHTTP();
    	var xhr_params = "clef=" + ClefTable;
     
    	// Definition appel fonction sur changement etat XHR
    	xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4) {
    			switch (xhr.status) {
    				case 200:
    					var docXML = cleanXML(xhr.responseXML.documentElement);
    					var Entree = docXML.getElementsByTagName("entree")[0];
    					majListe(ClefTable,Entree.getElementsByTagName("texte")[0].firstChild.nodeValue,Entree.getElementsByTagName("valeur")[0].firstChild.nodeValue);
    					break;
    				case 400:
    				case 500:
    					alert("Une erreur technique s'est produite. Merci de renouveler l'opération ultérieurement");
    					break;
    				default:
    					alert("Erreur lors de l'enregistrement. Merci de renouveler l'opération ultérieurement.");
    			}
    		}
    	};
     
    	// Envoi donnees vers serveur
    	xhr.open("POST", "retrouver_entree.php", true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xhr.send(xhr_params);
    }
    Cet appel à la fonction retrouverEntree() fonctionne très bien, le script PHP qu'elle appelle est bien exécuté (vérifié dans les logs), mais la fonction en elle-même plante sur l'appel xhr.status. avec l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur*: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: http://localhost/Bibliotheque/Bin/fonctions_java.js :: anonymous :: line 169"  data: no]
    Par ailleurs, le script PHP appelé seul dans un navigateur fonctionne bien également et me renvoie un fichier XML correctement constitué.

    Du coup, je ne comprends pas d'où provient mon erreur (si erreur il y a), d'autant que je me suis beaucoup inspiré des tutoriels du site pour construire ma fonction JS.
    Quelqu'un aurait-il une explication, et encore mieux, une solution ?

  2. #2
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut
    Bon, personne n'a d'idée ? Même une idée ?
    Ca n'arrive qu'à moi ce genre de "bug" ?

  3. #3
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut
    En continuant mes recherches et expérimentations, j'ai constaté que j'avais d'autres fonctions similaires, mais qui ne récupèrent pas de données, et qui fonctionnent sans problème.
    Par ailleurs, un petit alert(xhr.responseXML) juste après le test if (xhr.readyState == 4) me montre que responseXML est null.

  4. #4
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut
    Je progresse dans la résolution. La fonction retrouverEntree() est incluse dans une autre fonction, mettre_a_jour(). Si elle est appelée par la fenêtre F2au moment de sa fermeture (avec un window.opener.mettre_a_jour()), ça ne marche pas. En revanche, appelée après fermeture de F2 via un bouton dans F1, ça fonctionne.

  5. #5
    Membre éclairé Avatar de scrouet
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 280
    Par défaut
    Bon, je suis un peu tout seul sur cette discussion (), mais compte tenu de ce qui précède, quelqu'un serait-il en mesure de m'expliquer la différence de contexte entre l'exécution d'une fonction appelée depuis la fenêtre où elle est définie et son appel depuis une autre fenêtre ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut épineux
    'alut,

    En fait, tu suggères carrément la solution: le pb vient sûrement de ce que le contexte d'exécution de ton XHR disparaît lorsque tu fermes F2.

    Donc, il me semble que tu devrais coder
    xhr.open("POST", "retrouver_entree.php", false);
    àld
    xhr.open("POST", "retrouver_entree.php", true);

    Ainsi, ta fermeture de fenêtre attendra bien sagement la fin de ton XHR avant de se fermer.

    Conseil gratos, pas le tps de tester... mais j'y crois fort !

    Bonne chance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] erreur Status 404
    Par ammouna24 dans le forum AJAX
    Réponses: 5
    Dernier message: 29/04/2009, 14h30
  2. [AJAX] nsIXMLHttpRequest.status error incomprehensible
    Par Shiftane dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/04/2007, 10h54
  3. Réponses: 2
    Dernier message: 07/01/2007, 12h22
  4. Erreur XMLHttpRequest.status - NS_ERROR_NOT_AVAILABLE
    Par eowene dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/12/2006, 10h32
  5. [AJAX] Erreur système : -1072896658 Code 0
    Par ericw78 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/02/2006, 19h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo