Как отобразить ошибку, возвращаемую вызовом $.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;
});
Ответы
Ответ 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);
}