2017-11-24 2 views
0

Ich versuche, den folgenden JS-Code lokal auf meinem Computer sowie auf Codepen auszuführen und an beiden Orten gibt er mir den Status 0 zurück , obwohl die erzeugte Verbindung vollkommen in Ordnung ist. Was kann das Problem hier sein? Habe versucht, das Netz nach domänenübergreifenden Problemen zu durchsuchen, und habe versucht, einen NODE-Server/setze Header explizit zu setzen, um domänenübergreifenden Anfragen zu erlauben, aber bisher hat nichts funktioniert.Der Statuscode von XMLHttpRequest wird als 0 zurückgegeben. Ich habe versucht, alles zu korrigieren, aber hasnt funktioniert bis jetzt

window.onload = function(){ 
    let search = document.querySelector('input'); 
    const API_URL = "https://en.wikipedia.org/w/api.php?action=opensearch&format=json"; 

    search.addEventListener('change', function(){ 
     let term = this.value; 
     let url = `${API_URL}&search=${term}`; 
     console.log(url); 
     let xhr = new XMLHttpRequest(); 

     xhr.onload = function(){ 
      if(xhr.status === 200){ 
       console.log("ok"); 
      } 
     }; 

     xhr.open('GET', url, true); 
     xhr.send(null); 

     console.log(xhr.status); 

    }); 
}; 
+0

'console.log (xhr.status)' ausgeführt wird, wenn die Anforderung noch nicht gesendet ([Zustand 'UNSENT (numerischer Wert 0)'] (https://xhr.spec.whatwg.org/ #Zustände)). – Andreas

+0

Ajax ist eine asynchrone Operation. Der Anfangswert ist Null. [Von der Spitze meines Kopfes] wollen Sie einen 'onreadystatechange'-Event-Listener nicht' onload '. –

Antwort

0

Die xhr.status ist im Inneren des onload method verfügbar, Status erst nach dem onload Verfahren eingestellt wird aufgerufen wurde.

xhr.onload = function(){ 
console.log(xhr.status); 
    if(xhr.status === 200){ 
     console.log("ok"); 
    } 
}; 
Verwandte Themen