Я работаю над созданием запроса AJAX из расширения Firefox. У меня есть этот код:Должно ли сообщение об ошибке xmlhttprequest иметь сообщение об ошибке?
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]);
}
запрос не выполняется, потому что http://www.foo.bar/ не существует (я предполагаю). Мой вопрос: почему нет сообщения об ошибке в объекте evt, переданном transferFailed(), который говорит: «Домен не существует» или «Ошибка DNS» или что-то в этом роде? Ни одно из свойств объекта события не имеет каких-либо признаков того, что проблема, нет сообщения, код ошибки и т. Д.
Не должно быть какого-либо указания на то, что такое фактическая ошибка?
Есть ли способ, чтобы получить сетевые ошибки? – Nick
Вы можете попробовать атрибут «channel» только для mozilla. Если это допустимо внутри обработчика ошибок, то в вашем примере 'this.channel.status' вернет' Components.results.NS_ERROR_UNKNOWN_HOST'. – paa