2013-03-13 6 views
7

Ich bin eine einfache AJAX-Anforderung ausgeführt wird:Uncaught Fehler: InvalidStateError: DOM Ausnahme 11 mit AJAX?

function makePages(num) { 

    var conn = new XMLHttpRequest(); 

    conn.onreadystatechange = function() { 
     if (conn.status === 200 && conn.readyState === 4) { //error here 
      $('#oldPost').before(conn.responseText); 
     } 
     else{ 
      return 
     } 
    } 

    conn.open('GET','includes/feedExtra.php?num=' + num); 
    conn.send(); 
} 

Der Code wird ordnungsgemäß ausgeführt und die PHP gibt den richtigen Inhalt. Allerdings gibt es einen Fehler in Chrome Konsole:

Uncaught Error: InvalidStateError: DOM Exception 11

verweist er auf dieser Linie:

if (conn.status === 200 && conn.readyState === 4) {

Was mache ich falsch?

Antwort

14

Der Fehler:

Uncaught Error: InvalidStateError: DOM Exception 11 

Bedeutet, dass Sie im falschen Zustand für Status fragen. conn.status ist nicht verfügbar, während Readystate von 0 oder 1

Ihr Problem ist Sie conn.status verwenden, wenn der Readystate ist 0 und 1.

Sie müssen Code hinzufügen sicher conn.status zu machen ist in den unangemessenen Staaten, wie dies nicht abgefragt:

if(conn.readyState === 4 && conn.status === 200){ 

Dann wird Ihr Code nur conn.status zu gegebener Zeit abfragen.

Ref:

why does this piece of js throw a DOM Exception?

2

Versuchen Sie folgendes:

conn.open('GET','includes/feedExtra.php?num=' + num, false); 

false macht die Anfrage synchron, true/default asynchron ist.

In Ihrem Fall ist es zu true säumigen, die die Eigenschaften in Ihrem bedingten (conn.status === 200 && conn.readyState === 4) bedeutet ist noch nicht zur Verfügung. Sie werden bis nach dem Anruf sein.

Hoffentlich hilft das Ihnen einige.

Überprüfen Sie auch diese Diskussion here.

+1

Wow danke für den Link, den ich nicht so etwas finden konnte, haha. Es stellt sich heraus, dass du Recht hattest, ich musste sicherstellen, dass 'readyState == 4' bevor ich irgendetwas gemacht habe, also habe ich nur eine riesige if-Funktion um alles gewickelt und der Fehler ist weg! : D – bnynn

Verwandte Themen