Ajax GET url по ошибке jqxhr

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

Возможно ли это?

ИЗМЕНИТЬ Я могу увидеть попытку URL-запроса, сделанного с помощью FireBug, и осмотреть объект jqxhr через console.dir() и не может найти ничего, что поможет мне определить URL-адрес, который он пытался вызвать. В идеале, не хочу хранить глобальную переменную, надеялся получить это от аргументов.

Заранее спасибо, О..

$.ajax({
    type: 'get',
    url: 'somewhere/foo',
    context: this,
    success: this.mySuccess,
    error: this.myError,
    cache: false
});

myError = function (jqXhr, textStatus) {
    alert(jqXhr.url); //Get url of failed request and inject it into hyper link?
};

Ответ 1

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

var url = 'somewhere/foo';

$.ajax({
    type: 'get',
    url: url,
    context: this,
    success: this.mySuccess,
    error: this.myError,
    cache: false,
    error: function(jqXHR, exception) {
       //use url variable here   
    }
});

Другим вариантом может быть этот

$.ajax({
    type: 'get',
    url: 'https://google.com',
    context: this,
    success: this.mySuccess,
    error: this.myError,
    cache: false,
    beforeSend: function(jqXHR, settings) {
        jqXHR.url = settings.url;
    },
    error: function(jqXHR, exception) {
        alert(jqXHR.url);
    }
});

FIDDLE

Ответ 2

Я считаю, что самый простой способ был бы:

this.url

Это должно быть привязано к экземпляру объекта ajax, который имеет атрибут url.

Ответ 3

Проще всего было бы просто получить доступ к URL через объект настроек ajax (JQueryAjaxSettings) из контекста обратных вызовов с ошибкой.

$.ajax({
    type: 'get',   
    url: 'somewhere/foo',    
    error: function() {
        alert(this.url);
    }
});