Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Uncaught Error: InvalidStateError: DOM Exception 11

6 réponses
Avatar
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==200){
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.

6 réponses

Avatar
Une Bévue
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 :
<http://stackoverflow.com/questions/15398571/uncaught-error-invalidstateerror-dom-exception-11-with-ajax>

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 "===" ???
Avatar
Une Bévue
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.
Avatar
SAM
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
Avatar
SAM
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
Avatar
Une Bévue
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.
Avatar
Une Bévue
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.