Подтвердить что ты не робот

Как отобразить ошибку, возвращаемую вызовом $.ajax?

У меня есть код, который навсегда загружается, и, наконец, когда я помещаю обработчик ошибок, он показывает предупреждение, но мне нужно знать, какую ошибку он вернул? Как я могу знать?

EDIT: я получаю запрошенный url не найден, но я уверен, что url: действительный URL-адрес моего хоста, что может быть неправильным? Я даже могу получить доступ к нему непосредственно в браузере.

// process logging in a user from sidebar
$("#login-form").submit(function(event) {
    $('input:submit').attr("disabled", true);
    $("p.form-result").empty();
    $('p.form-submit').after('<p class="loading"><img src="<?php bloginfo('template_directory'); ?>/img/loading.gif" alt="" /></p>');
    $.ajax({
        url: '<?php bloginfo('template_directory'); ?>/ajax/login.php',
        type: 'POST',
        data: $(this).serialize(),
        dataType: 'json',
        success: function(data){
            $('.loading').remove();
            $('input:submit').attr("disabled", false);
            if (data.status) {
                // success
                $("p.form-result").html('<span class="success">' + data.message + '</span>');
                window.setTimeout(function(){location.reload()},3000);
            } else {
                // error
                $("p.form-result").html('<span class="error">' + data.message + '</span>');
            }
        },
        error: function(data){
            alert('error');
        }
    });
    return false;
});
4b9b3361

Ответ 1

Событие error функции jQuery $.ajax получает 3 аргумента

error : function(jqXHR, textStatus, errorThrown){

}

Это jQuery documentation для этого события:

Функция, вызываемая, если запрос терпит неудачу. Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип ошибки, которая произошла, и необязательный объект исключения, если он произошел. Возможные значения для второго аргумент (помимо нуля) - это "тайм-аут", "ошибка", "прерывание" и "Parsererror". Когда возникает ошибка HTTP, errorThrown получает текстовую часть статуса HTTP, такую ​​как "Не найден" или "Внутренний Ошибка сервера." Начиная с jQuery 1.5, параметр ошибки может принимать массив функций. Каждая функция будет вызываться по очереди. Примечание. Этот обработчик не вызывается для междоменных запросов script и JSONP. Это Событие Ajax.

Вы сможете узнать, какая ошибка с параметром textStatus

Ответ 2

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

error: function(xhr, ajaxOptions, thrownError){
                    alert(xhr.status);
                },

Ответ 3

Используйте параметр данных вашей функции ошибок, чтобы предупредить об ошибке и ее свойствах. Он имитирует вашу фактическую ошибку.

error: function(data){
     alert(data);
}

Возможные значения объекта данных (ошибки) в соответствии с этим вопросом (http://stackoverflow.com/questions/95600/jquery-error-option-in-ajax-utility) answer

timeout - when your specified timeout is exceeded
error - http error, like 404
notmodified - when requested resource was not modified since last request
parsererror - when an xml/json response is bad

Ответ 4

Попробуйте добавить '+' между строкой и переменной, если вы выполните concatanate. Вот так:

url: '<?php bloginfo('+template_directory+'); ?>/ajax/login.php'

Ответ 5

Измените это

url: '<?php bloginfo('template_directory'); ?>/ajax/login.php',

Под этим

url: '<?php bloginfo("template_directory"); ?>/ajax/login.php',

:)

Ответ 6

Вы не можете проверить данные объекта с помощью оператора оповещения

используйте console.log(data) для проверки ошибки

error: function(data){
     console.log(data);
}