В следующем коде все, что я пытаюсь сделать, это получить код ответа HTTP из вызова jQuery.ajax. Затем, если код 301 (перемещен навсегда), отобразите заголовок ответа «Местоположение»:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>jQuery 301 Trial</title>
<script src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
function get_resp_status(url) {
$.ajax({
url: url,
complete: function (jqxhr, txt_status) {
console.log ("Complete: [ " + txt_status + " ] " + jqxhr);
// if (response code is 301) {
console.log ("Location: " + jqxhr.getResponseHeader("Location"));
// }
}
});
}
</script>
<script type="text/javascript">
$(document).ready(function(){
$('a').mouseenter(
function () {
get_resp_status(this.href);
},
function () {
}
);
});
</script>
</head>
<body>
<a href="http://ow.ly/4etPl">Test 301 redirect</a>
<a href="http://cnn.com/not_found">Test 404 not found</a>
</body>
</html>
Может кто-нибудь указать, где я иду не так? Когда я проверяю объект 'jqxhr' в Firebug, я не могу найти ни код состояния, ни заголовок ответа 'Location'. Я установил точку останова в последней строке «complete».
Большое спасибо.
ajax
jquery-1.5
Махеш
источник
источник
Ответы:
Я вижу поле состояния на объекте jqXhr, вот скрипка с ним работает:
http://jsfiddle.net/magicaj/55HQq/3/
источник
Наткнулся на эту старую ветку в поисках подобного решения и нашел приемлемый ответ с использованием
.complete()
методаjquery ajax
. Я цитирую уведомление на сайте jquery здесь:Чтобы узнать
status code
ответ ajax, можно использовать следующий код:Работает аналогично для
.done()
и.fail()
источник
Вероятно, более идиоматично использовать jQuery для использования свойства statusCode объекта параметра, переданного функции $ .ajax:
Однако, как сказал Ливингстон Сэмюэл , невозможно поймать 301 код состояния в javascript.
источник
Когда ваш запрос XHR возвращает ответ Redirect (HTTP Status 301, 302, 303, 307), он
XMLHttpRequest
автоматически следует за перенаправленным URL-адресом и возвращает код состояния этого URL-адреса .Вы можете получить не перенаправляющие коды состояния (200, 400, 500 и т. Д.) Через
status
свойство объекта xhr.Таким образом , вы не можете получить перенаправлены местоположение из заголовка отклика
301
,302
,303
или307
запрос.Возможно, вам придется изменить логику вашего сервера, чтобы реагировать так, чтобы вы могли обрабатывать перенаправление, а не позволять браузеру это делать. Пример реализации .
источник
Вы можете проверить ваш ответный контент, просто console.log, и вы увидите, что свойство whitch имеет код состояния. Если вы не понимаете jsons, обратитесь к видео: https://www.youtube.com/watch?v=Bv_5Zv5c-Ts
Это объясняет очень базовые знания, которые позволят вам чувствовать себя более комфортно с JavaScript.
Вы можете сделать это с более короткой версией запроса ajax, см. Код выше:
Пример вывода на консоль:
источник
jqxhr - это объект json:
смотрите: jQuery ajax
так что вы бы сделали:
jqxhr.status
чтобы получить статусисточник
NB. Использование jQuery 3.4.1.
источник