Вопрос по http, javascript, http-status-codes, ajax, jquery – Как обработать определенную ошибку HTTP для всех вызовов AJAX?

6

У меня есть веб-приложение, запрашивающее и отправляющее данные через AJAX, и в ответ мой сервер отправляет коды состояния HTTP, в зависимости от ситуации. так, например, если пользователь пытается войти в систему, когда он вошел в систему, я, вероятно, верну400 HTTP status code, И в конце концов я обращаюсь с этим с предупреждением

Но обработка этих кодов состояния HTTP становится слишком сложной, поскольку я активно использую AJAX. это означает, что я буду неоднократно обрабатывать код состояния HTTP при каждом запросе AJAX, что приведет к дублированию кода, и это плохая практика.

Так,what I'm looking for это способ обрабатывать все эти ошибки в одном месте, поэтому я просто обработать все400, 401и т. д. с тем же кодом.

What i'm currently doing:

Обработка ошибок вручную для каждого вызова AJAX. ИспользуяstatusCode в$.ajax().

  statusCode: {
        500: function(data) {
            alert('Some friendly error message goes here.');
        }

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

В настоящее время я имею в виду единственную идею - создать функцию, которая будет работать поверх AJAX, что-то вроде:

    function doAjax(type,url, data, moreVars) {
//this function is just a SIMPLE example, could be more complex and flexible.
        $.ajax({
            type: type,
            url: url,
            data: data,
            moreOptions:moreVars,
            //now handling all status code.
            statusCode: {
                //handle all HTTP errors from one place.
            }
        });
    }

    doAjax("POST", 'mydomain.com/login.php', dataObj);

Ваш Ответ

1   ответ
11

Ты можешь использовать$.ajaxSetup() зарегистрировать глобальные обработчики состояний ошибок.

Description: Set default values for future Ajax requests.

Пример:

$.ajaxSetup({
    statusCode: {
        500: function(data) {
            alert('Some friendly error message goes here.');
        } 
    }   
});
"Note: Global callback functions should be set with their respective global Ajax event handler methods—.ajaxStart(), .ajaxStop(), .ajaxComplete(), .ajaxError(), .ajaxSuccess(), .ajaxSend()—rather than within the options object for $.ajaxSetup()."

Похожие вопросы