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

JQuery Ajax 404 Обработка

Я пытаюсь получить доступ к событию 404, которое я могу видеть, возвращаясь как 404 с firebug, но функция ошибки не пинает, С моим кодом ниже всегда получается Error: success?.

т.

$.ajax({
    type: 'get',
    url: 'url: 'https://admin.instantservice.com/resources/smartbutton/5702/10945/available.gif?' + Math.floor(Math.random()*10001),
    success: function(data, textStatus, XMLHttpRequest){
        console.log('Error: ' + textStatus);
    },
    error:function (xhr, ajaxOptions, thrownError){
        alert(xhr.status);
        alert(xhr.statusText);
        alert(xhr.responseText);
    }
});

Снова я знаю 1000%, что im получает 404 Not Found в firebug, он никогда не вызывает ошибку.

Я что-то пропустил?

4b9b3361

Ответ 2

То, что вы также можете сделать, это использовать функцию $.ajaxError, например

    $("#message").ajaxError(function(event, request, settings){
        $(this).show();
        $(this).append("<li>Error requesting page " + settings.url + "</li>");
    });

Ответ 3

У меня был очень похожий результат/проблема. Суть в том, что я не смог убедиться, что мой URL-адрес не содержит никаких одинаковых имен параметров в разделе данных функции ajax.


Причиной для меня было то, что я создал URL-адрес с php-кодом, чтобы получить URL-адрес

pines_url('com_referral', 'sendhttprequest')

который выводится на URL с параметром

option=com_referral

и параметр

action=sendhttprequest

Моя проблема BIG заключалась в том, что я также пытался отправить параметр "действие" в раздел данных функции AJAX.

data: {"action": "getpoints"}

Итак, второе действие было отменено, "getpoints" не существует, но сложная часть заключается в том, что firebug, очевидно, не сказал бы мне url с getpoints, он сказал бы мне url как sendhttprequest.

Надеюсь, что это не сбивало с толку, но я также надеюсь, что это поможет кому-то еще с подобной проблемой!

Ответ 4

Добавление значения тайм-аута вызовет обратный вызов ошибки, если в течение указанного времени ответа нет. При обратном вызове 5000, если запрос jsonp не отвечает через 5 секунд (т.е. Он 404 с), тогда будет выполняться обратный вызов ошибки.

$.ajax({
    type: 'get',
    timeout: 5000,
    url: 'url: 'https://admin.instantservice.com/resources/smartbutton/5702/10945/available.gif?' + Math.floor(Math.random()*10001),
    success: function(data, textStatus, XMLHttpRequest){
        console.log('Error: ' + textStatus);
    },
    error:function (xhr, ajaxOptions, thrownError){
        alert(xhr.status);
        alert(xhr.statusText);
        alert(xhr.responseText);
    }
});

Ответ 5

Я не знаю точно, почему, но если вы используете метод chaining .fail, ошибка будет правильно захвачена, даже если это другой сайт:

$.ajax({
    type: 'get',
    url: 'http://example.com',
    success: function(data, textStatus, XMLHttpRequest){
        console.log('Error: ' + textStatus);
      }
    }).fail(function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(xhr.statusText);
        alert(xhr.responseText);
    });