Pracuję nad utworzeniem żądania AJAX z rozszerzenia przeglądarki Firefox. Mam ten kod:Czy błąd zdarzenia xmlhttprequest nie powinien zawierać komunikatu o błędzie?
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]);
}
żądanie zakończy się niepowodzeniem, ponieważ http://www.foo.bar/ nie istnieje (zakładam). Moje pytanie brzmi: dlaczego nie ma komunikatu o błędzie w obiekcie evt przekazanym do metody TransferFailed(), która mówi: "Domena nie istnieje" lub "Awaria DNS" lub coś podobnego? Żadna właściwość obiektu zdarzenia nie ma żadnego wskazania, na czym polega problem, nie ma komunikatu, kodu błędu itp.
Czy nie powinno istnieć jakieś wskazanie, jaki jest faktyczny błąd?
Czy istnieje sposób, aby uzyskać błędy sieciowe? – Nick
Możesz wypróbować atrybut "channel" tylko dla Mozilli. Jeśli jest poprawna w procedurze obsługi błędów, w twoim przykładzie 'this.channel.status' zwróci' Components.results.NS_ERROR_UNKNOWN_HOST'. – paa