Uncaught Error: InvalidStateError: DOM Exception 11

Le
Une Bévue
Bon, j'ai cette erreur :
Uncaught Error: InvalidStateError: DOM Exception 11
à la ligne 22 (dixit Chrome Outils de dev) où justement le script ne
passe pas :

function viewCategories(){
if(xhr.readyState==4 && xhr.status= 0){
var array=validateJSON(xhr.responseText);
if(array !== false){
landp_mongo.elements['categories'].innerHTML='<p
class="row"><span class="content" data-cat="-1"
onclick="loadItems(-1);return false">Toutes</span></p>';
var length=array['data'].length;
for(var i=0;i<length;i++){
hash=array['data'][i];
landp_mongo.elements['categories'].innerHTML+="<p
class='row'><span class='content' data-cat='"+hash['idx']+"'
onclick='loadItems("+hash['idx']+");return
false'>"+hash['name']+"</span></p>";
}
}else{
landp_mongo.elements['categories'].innerHTML='<p
class="row"><span class="content" >JSON invalide.</span></p>';
}
}else{
var erreur_str=(xhr.status == 404)? "Page :<br />'"+url+"'<br />
introuvable" : "#"+xhr.status+" inconnue";// ligne 22
landp_mongo.elements['categories'].innerHTML='<p class="row"><span
class="content" >'+erreur_str+'</span></p>';
}
} // viewCategories()

le contexte :
"viewCategories()" est en callback d'une fonction "loadCategories()"
qui lance un xhr.

comme je n'ai pas de 404, le script ne passe pas par cet else

"loadCategories()" est lancé indirectement par window.onload.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Une Bévue
Le #25658662
Le 13/09/13 19:26, Une Bévue a écrit :
Bon, j'ai cette erreur :
Uncaught Error: InvalidStateError: DOM Exception 11
à la ligne 22 (dixit Chrome Outils de dev) où justement le script ne
passe pas :

function viewCategories(){
if(xhr.readyState==4 && xhr.status= 0){



<snip />

bon, je "pense" avoir résolu ce petit pb mais n'en suis pas absolument
certain.
stackoverflow page :

m'a "mis la puce à l'oreille", au lieu de faire l'if combiné comme plu
haut, j'en met deux en "séquence" :

if(xhr.readyState===4){
if(xhr.status== 0){

càd que là, le "xhr.status" n'est testé qu'après avoir eu le *bon*
"xhr.readyState".

pourtant la vérification logique de :
xhr.readyState==4 && xhr.status= 0
se fait de gauche à droite non ?

donc si c'est pas le readyState, normalement le status n'est pas évalué.

remarquez, j'ai changé, en même temps, les "==" en "===" ???
Une Bévue
Le #25658652
Le 13/09/13 19:36, Une Bévue a écrit :
remarquez, j'ai changé, en même temps, les "==" en "===" ???



d'après ce que je viens de tester, c'est *très* important, sinon j'ai
encore deux erreurs pour deux autres xhr.
SAM
Le #25665712
Le 13/09/13 19:36, Une Bévue a écrit :

pourtant la vérification logique de :
xhr.readyState==4 && xhr.status= 0
se fait de gauche à droite non ?



de mémoire (faible) de très anciennes lectures, il me semble que c'est
le contraire

mais ... ça ne veut pas dire que ça doit suivre un ordre "chronologique"
(celui des réponses de l'état du serveur),
ça ne suit, au mieux, qu'un ordre "logique"



Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
SAM
Le #25665702
Le 13/09/13 19:43, Une Bévue a écrit :
Le 13/09/13 19:36, Une Bévue a écrit :
remarquez, j'ai changé, en même temps, les "==" en "===" ???



d'après ce que je viens de tester, c'est *très* important,



Je sais pô

sinon j'ai encore deux erreurs pour deux autres xhr.



pit'êt' bien que

if(xhr.readyState=='4'){
if(xhr.status=='200'){

fonctionnerait aussi ?

Mébon ... ça m'étonne qd même


Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Une Bévue
Le #25668572
Le 17/09/13 12:08, SAM a écrit :

de mémoire (faible) de très anciennes lectures, il me semble que c'est
le contraire



dans ce cas, il faudrait écrire :

if ( xhr.status= 0 && xhr.readyState==4 ) {
...
}

ou bien :

if (xhr.readyState==4) {
if (xhr.status= 0) {
...
}
}

qui *doit* marcher à tous les coups.
Une Bévue
Le #25668562
Le 17/09/13 12:11, SAM a écrit :
pit'êt' bien que

if(xhr.readyState=='4'){
if(xhr.status=='200'){

fonctionnerait aussi ?



OUI, c'est ce que j'ai fini par utiliser.
Publicité
Poster une réponse
Anonyme