Ich arbeite daran, eine AJAX-Anfrage von einer Firefox-Erweiterung zu machen. Ich habe diesen Code:Sollte das Fehlerereignis von xmlhttprequest keine Fehlermeldung haben?
function GetMenu(){
var oReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
// Setup event handlers - must be set before calling open()
oReq.addEventListener("progress", updateProgress, false);
oReq.addEventListener("load", transferComplete, false);
oReq.addEventListener("error", transferFailed, false);
oReq.addEventListener("abort", transferCanceled, false);
oReq.open('POST', "http://www.foo.bar/", true);
oReq.send('your=data&and=more&stuff=here');
}
function transferFailed(evt) {
Application.console.log("An error occurred while transferring the file.");
Application.console.log(this.responseText);
for(var i in evt)
Application.console.log(i+ ' => '+evt[i]);
}
Die Anforderung schlägt fehl, da http://www.foo.bar/ existiert nicht (ich nehme an). Meine Frage ist, warum gibt es keine Fehlermeldung in dem evt-Objekt, das an transferFailed() übergeben wird, das sagt: "Die Domäne existiert nicht" oder "DNS-Fehler" oder etwas dieser Art? Keine der Eigenschaften des Ereignisobjekts weist auf das Problem hin, keine Meldung, kein Fehlercode usw.
Sollte es keine Art von Anzeige geben, was der tatsächliche Fehler ist?
Gibt es eine Möglichkeit Netzwerkfehler zu bekommen? – Nick
Sie könnten das Mozilla-only 'channel' Attribut versuchen. Wenn es innerhalb des Error-Handlers gültig ist, dann wird in diesem Beispiel 'this.channel.status'' Components.results.NS_ERROR_UNKNOWN_HOST' zurückgeben. – paa