2013-09-04 9 views
6

Я работаю над созданием запроса 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» или что-то в этом роде? Ни одно из свойств объекта события не имеет каких-либо признаков того, что проблема, нет сообщения, код ошибки и т. Д.

Не должно быть какого-либо указания на то, что такое фактическая ошибка?

ответ

1

Поскольку вы работаете с хромированными-привилегии:

function transferFailed(evt) { 
if (this.channel && this.channel.status == Components.results.NS_ERROR_UNKNOWN_HOST) { 
    alert("DNS error"); 
} 
} 

(то, что @paa сказал в комментарии).

See (возможно, потребуется QueryInterface/instanceof соответственно):

1

Сетевые ошибки не распространяются на вызывающего абонента.

statusstatusText, хотя это то, что нравится серверу) касается HTTP.

+0

Есть ли способ, чтобы получить сетевые ошибки? – Nick

+0

Вы можете попробовать атрибут «channel» только для mozilla. Если это допустимо внутри обработчика ошибок, то в вашем примере 'this.channel.status' вернет' Components.results.NS_ERROR_UNKNOWN_HOST'. – paa

Смежные вопросы