Пробуйте/Ловите jQuery ajax запрос

Я пытаюсь создать расширение 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.');
}
15
задан Anthony 11 May 2010 в 11:49
поделиться