jQuery общая обработка ошибок ajax и индивидуальная обработка ошибок

У меня есть общий обработчик ошибок ajax, написанный так:

$('html').ajaxError(function(e, xhr, settings, exception) {

    var message = '';

    if (xhr.status == 0) {
        message = 'You are offline!\n Please check your network.';
    }
    else if (xhr.status == 403) {
        window.location.href = $('#logon').attr('href');
    }
    else if (xhr.status == 404) {
        message = 'Requested URL not found.';
    }
    else if (xhr.status == 500) {

        message = xhr.responseText;

        $('#cboxLoadedContent div.news_article_content').append('<p>' + message + '</p>');

        try {//Error handling for POST calls
            message = JSON.parse(xhr.responseText);
        }

        catch (ex) {//Error handling for GET calls
            message = xhr.responseText;
        }

    }
    else if (errStatus == 'parsererror') {
        message = 'Error.\nParsing JSON Request failed.';

    }
    else if (errStatus == 'timeout') {
        message = 'Request timed out.\nPlease try later';
    }
    else {
        message = ('Unknown Error.\n' + xhr.responseText);
    }

    if (message != '' && xhr.status != 500) {
        message = message;
    }

    if (xhr.status != 403) {

        $('#icis_dashboard').append('<p id="ajax_error_msg" class="offScreen">' + message + '</p>');

        errorBox({
            inline: true,
            width: 0,
            href: '#ajax_error_msg',
            onLoadCall: function() { $('#cboxLoadedContent').jScrollPaneRemove(); },
            onCleanupCall: function() { $('#ajax_error_msg').remove(); }
        });
    }

});

Поэтому, когда ошибка не 403, отображается диалоговое окно с текстом, относящимся к ошибка.

Это нормально, но я бы хотел иметь общий обработчик в качестве резервной копии, а затем обрабатывать каждую ошибку индивидуально в рамках исходного вызова ajax.

, чтобы обработчик резервного копирования предупреждал «полосу» на 404 я хотел бы вместо этого предупредить "foo":

            error: function(xhr) {
            if (xhr.status == 404) {
                //window.location.href = $('#logon').attr('href');
                alert("foo");    
            }
        }

Я все равно где это сделать? Я не знаю, как предотвратить срабатывание резервной копии, поскольку они оба, кажется, срабатывают в данный момент.

16
задан RyanP13 3 February 2011 в 14:22
поделиться