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);
}
});