2017-11-16 2 views
0

Dieses "funktionierende" Skript sendet JSON an eine externe API. Was es nicht richtig macht, ist Log-Erfolg oder Fehler in der Konsole. Auch wenn es funktioniert, zeigt es mir immer noch dreimal "Error". Fragen:XMLHttprequest Fehlermeldung auch im Erfolgsfall

a. Wo ist der Fehler im Code, der im Erfolgsfall die Fehlermeldung verursacht?

Edit: Dieser Teil (a) wurde von Suren Srapyan beantwortet wurde, hatte ich die abc.status vermasselt, Code unten hat

b aktualisiert. Läuft de XMLHttpRequest() immer dreimal und protokolliert die Nachricht dreimal oder ist das etwas anderes?

Edit: Dies wird höchstwahrscheinlich durch einen anderen Teil des Codes verursacht

var abc = new XMLHttpRequest(); 
    var url = "http://myurl"; 
    abc.open("POST", url, true); 
    abc.setRequestHeader("Content-type","application/json"); 
    abc.onreadystatechange = function() { 
    if (abc.status >= 200 && abc.status < 300) { 
     console.log(abc.responseText); 
     console.log("Success!!"); 
    } else { 
     console.log("Error!"); 
    } 

Antwort

2

Ein Wert nicht >= 200 sein kann und weniger als 200 zugleich. So erhalten Sie immer die Nachricht Error. Ich denke, Sie müssen die statusCode nur mit 200 vergleichen. Aber beachte auch, dass du die status bekommst. Wenn Sie in cross site gehen, erhalten Sie status Code auf 0 festgelegt.

var abc = new XMLHttpRequest(); 
 
var url = 'https://jsonplaceholder.typicode.com/posts/1'; 
 

 
abc.onreadystatechange = function() { 
 
    console.log(abc.status); 
 
    if (abc.status === 200) { 
 
     console.log(abc.responseText); 
 
     console.log("Success!!"); 
 
    } else { 
 
    console.log("Error!"); 
 
    } 
 
} 
 

 
abc.open("GET", url, true); 
 
abc.setRequestHeader("Content-type","application/json");

+0

Vielen Dank für mich in der richtigen Richtung schieben! Ich habe eine andere Lösung gewählt (siehe Arbeitscode oben). Irgendeine Idee über Frage (b)? – Chris

+0

@Chris Es wird nur einmal aufgerufen. Vielleicht ist ein anderes Problem in den anderen Teilen Ihres Codes? –

+0

In diesem Fall wird diese Frage als beantwortet markiert, danke für Ihre Hilfe! – Chris

Verwandte Themen