2012-08-22 16 views
11

Otrzymuję poniższy błąd.Błąd niezamierzony: INVALID_STATE_ERR: DOM Exception 11

Uncaught Error: INVALID_STATE_ERR: DOM Exception 11

Oto kod, w którym otrzymuję komunikat Błąd RUN TIME.

xhttp.setRequestHeader("Content-type","application/xhtml+xml");<br> 
xhttp.open("POST",xmlFile,true);<br> 
xhttp.send(postData); 

Próbowałem z false w trzecim parametrze xhttp.open.
Czy ktoś może mi powiedzieć, co to powoduje?

+0

Czy wysyłając wniosek do tego samego serwera, który służył stronę? Pamiętaj o CORS! – tkone

+0

Moja prośba dotyczy dwóch serwerów. Jeden to nasz serwer (środkowa warstwa), a drugi to serwer expedia (interfejs API rezerwacji hotelowej). Nasza środkowa warstwa przesyła dalej do nas informację o expedzie i powrocie. – Anildhara

Odpowiedz

22

Błąd wynika z kolejności wykonywania:

xhttp.open("POST",xmlFile,true); 
xhttp.setRequestHeader("Content-type","application/xhtml+xml"); 
xhttp.send(postData); 

Musisz najpierw otworzyć połączenie i następnie ustawić nagłówek żądania inaczej dostaniesz błąd.

+2

Witam, Anonimowy Twoje zamówienie powyższego kodu jest idealne. Teraz mój kod działa poprawnie. Wielkie dzięki. – Anildhara

+0

To jest odpowiedź, @Aildildara to oznacz! – candlejack

+0

Człowieku, nie jestem pewien dlaczego, ale w chromie, nie obchodziło mnie, w jakiej kolejności ustawiłem nagłówki. Kiedy doszło do bezgłowego testowania przeglądarki za pomocą phantomjs, wybuchło! Wielkie dzięki! Dosłownie waliłem głową o biurko przez cały dzień. – jemiloii

1

XMLHttpRequest::Status jest niedostępny do XMLHttpRequest::readyState zmieniono na 4 tj. Właściwa odpowiedź została uzyskana z serwera i została teraz zapełniona zmienną Status.

W ten sposób dostęp do XMLHttpRequest :: Status wcześniej może spowodować ten błąd.

Rozwiązanie: najpierw sprawdzić readyState i wyłącznie na sukces — dostępu Status

if (xmlhttp.readyState==4) 
{ 
    switch (xmlhttp.status) 
    { 
    case 200: // Do the Do 
     break; 
    case 404: // Error: 404 - Resource not found! 
     break; 
    default: // Error: Unknown! 
    } 
} 
Powiązane problemy