2012-06-07 2 views
15

У меня есть этот код:Захват 404 статус с JQuery AJAX

$.ajax({ cache: false, 
    url: "/Admin/Contents/GetData", 
    data: { accountID: AccountID }, 
    success: function (data) { 
     $('#CityID').html(data); 
    }, 
    error: function (ajaxContext) { 
     alert(ajaxContext.responseText) 
    } 
}); 

Я до сих пор путают о AjaxContext и как захватить 404 коды возврата. Однако у меня есть другой вопрос. Я читаю кое-что о кодировании с успехом и терпит неудачу и больше не использую ошибку в последних версиях jQuery.

Так что я должен изменить свой код, чтобы использовать выполненный и сбой. Как же я мог проверить 404?

+0

Как бы эту работу, используя .fail()? –

ответ

24

Заменить функцию ошибки следующим образом ...

error:function (xhr, ajaxOptions, thrownError){ 
    if(xhr.status==404) { 
     alert(thrownError); 
    } 
} 
+0

У меня ранее была ошибка: function (jqXHR, textStatus, errorThrown). правильна ajaxOptions. Должен ли он быть textStatus? – Alan2

+0

Работает для меня, не понимаю почему нет, но желаю сказать по-другому. – JayTee

+3

Просто хочу отметить, что это не будет работать для перекрестных доменных вызовов. Он будет терпеть неудачу, и не будут выполнены никакие «завершенные» или «ошибочные» параметры обратного вызова. – Meogi

3

404 erros будет обрабатываться анонимной функцией, подключенной к объекту error. Все, кроме успешного HTTP-запроса на URL (т. Е. 2xx), вызовет метод ошибки. Ниже будет работать для вашей цели:

error : function(jqXHR, textStatus, errorThrown) { 
    if(jqXHR.status == 404 || errorThrown == 'Not Found') 
    { 
     console.log('There was a 404 error.'); 
    } 
} 

Когда они ссылаются на удаление success и error функции в документации JQuery, они в виду те из класса jqXHR, не свойства $.ajax().

+0

Но верно ли кодирование этой анонимной функции JayTee? Моя предыдущая попытка просто поместила переменную ajaxContent в paranthasis после функции. – Alan2

+0

Функция обратного вызова принимает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строку, описывающую тип ошибки и необязательный объект исключения. При возникновении ошибки HTTP errorThrown получает текстовую часть статуса HTTP, например «Not Found» или «Internal Server Error». – BenM

+0

Я отредактировал свой ответ, чтобы включить правильный синтаксис ... – BenM

Смежные вопросы