Я пытаюсь создать расширение Google Chrome, которое выполняет ajax запрос. Что-то подобное расширению Средства проверки Gmail. Проблема состоит в том, что, когда я делаю запрос с помощью jQuery, и я вставил неверное имя пользователя, это перестало работать тихо с ошибочной проигнорированной функцией обратного вызова.
Если я перемещаю вызов ajax из сценария background.html (где я не вижу запросы в окне разработчика), к сценарию options.html, я заставляю диалоговое окно повторно проходить проверку подлинности. Если я поразил отмену, ТО ошибочный обратный вызов jQuery стреляет.
Но в исходном образцовом расширении (снова, средство проверки Gmail), они используют плоскость (не-jQuery) ajax вызовы с попыткой/выгодой, и если я вставил неправильные учетные данные, я получаю предупреждение, говоря так же.
Я пытался перенести весь вызов jQuery в попытку/выгоду, как так:
try {
$.ajax({
type: "POST",
url: someurl,
contentType : "text/xml",
data: somedata,
username: user,
password: pass,
success: function(data,status,xhr){
alert("Hurrah!");
},
error: function(xhr, status, error){
alert("Error!" + xhr.status);
},
dataType: "xml"
});
} catch(e) {
alert("You messed something up!");
}
Но тем не менее ничто.
Действительно ли ошибка происходит из-за него являющийся асинхронным, или разве Chrome не возвращает запрос как ошибку, так как это хочет повторно запросить учетные данные? Или разве я просто не знаю, как использовать попытку/выгоду?
Вот очень сокращенная версия того, как типовой кодекс делает запрос:
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
try {
if ( req.readyState == 4 ) {
//Do some stuff with results
}
}
catch (ex) {
alert('Error parsing response.');
}
}
try {
req.send (data);
}
catch (ex) {
alert ('Something went wrong with the request.');
}