Dalam kode berikut, semua yang saya coba lakukan adalah mendapatkan kode respons HTTP dari panggilan jQuery.ajax. Kemudian, jika kodenya 301 (Dipindahkan Secara Permanen), tampilkan tajuk respons 'Lokasi':
<?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>
Bisakah seseorang menunjukkan kesalahan saya? Ketika saya memeriksa objek 'jqxhr' di Firebug, saya tidak dapat menemukan kode status, atau header respons 'Lokasi'. Saya menetapkan breakpoint pada baris terakhir 'lengkap'.
Terimakasih banyak.
ajax
jquery-1.5
Mahesh
sumber
sumber
Jawaban:
Saya melihat bidang status pada objek jqXhr, ini biola yang berfungsi:
http://jsfiddle.net/magicaj/55HQq/3/
sumber
Datang di utas lama ini mencari solusi yang sama sendiri dan menemukan jawaban yang diterima menggunakan
.complete()
metodejquery ajax
. Saya mengutip pemberitahuan di situs web jquery di sini:Untuk mengetahui
status code
respons ajax, seseorang dapat menggunakan kode berikut:Bekerja sama untuk
.done()
dan.fail()
sumber
Mungkin jQuery lebih idiomatis untuk menggunakan properti statusCode dari objek parameter yang diteruskan ke fungsi $ .ajax:
Namun, seperti yang dikatakan Livingston Samuel , tidak mungkin untuk menangkap 301 kode status dalam javascript.
sumber
Ketika permintaan XHR Anda mengembalikan respons Pengalihan (HTTP Status 301, 302, 303, 307), maka
XMLHttpRequest
secara otomatis mengikuti URL yang dialihkan dan mengembalikan kode status URL itu .Anda bisa mendapatkan kode status non-redirect (200, 400, 500 dll) melalui
status
properti objek xhr.Jadi Anda tidak bisa mendapatkan lokasi diarahkan dari header respon dari
301
,302
,303
atau307
permintaan.Anda mungkin harus mengubah logika server Anda untuk merespons dengan cara yang Anda bisa menangani redirect, daripada membiarkan browser melakukannya. Sebuah contoh implementasi .
sumber
Anda dapat memeriksa konten respone Anda, cukup konsol.log itu dan Anda akan melihat properti whitch memiliki kode status. Jika Anda tidak mengerti jsons, silakan lihat video: https://www.youtube.com/watch?v=Bv_5Zv5c-Ts
Ini menjelaskan pengetahuan yang sangat mendasar yang membuat Anda merasa lebih nyaman dengan javascript.
Anda dapat melakukannya dengan versi permintaan ajax yang lebih pendek, silakan lihat kode di atas:
Contoh keluaran konsol:
sumber
jqxhr adalah objek json:
lihat: jQuery ajax
jadi kamu akan melakukan:
jqxhr.status
untuk mendapatkan statussumber
NB: Menggunakan jQuery 3.4.1
sumber