在Ajax中,重定向是通过服务器返回重定向状态码和目标URL来实现的。如果Ajax没有重定向到给定的URL,可能是因为服务器没有正确地返回重定向状态码或目标URL。下面是一种可能的解决方法,其中包含代码示例:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'your_url', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
// 请求成功
var response = xhr.responseText;
// 处理响应数据
} else if (xhr.status === 302) {
// 重定向到给定的URL
var redirectUrl = xhr.getResponseHeader('Location');
window.location.href = redirectUrl;
} else {
// 请求失败
console.log('请求失败');
}
}
};
xhr.send();
在上面的代码中,我们通过xhr.status
来检查服务器返回的状态码。如果状态码为200,表示请求成功,可以处理响应数据。如果状态码为302,表示重定向,我们可以通过xhr.getResponseHeader('Location')
来获取重定向URL,并使用window.location.href
将页面重定向到该URL。如果状态码不是200或302,则请求失败。
$.ajax({
url: 'your_url',
method: 'GET',
success: function(response, status, xhr) {
// 请求成功
// 处理响应数据
},
error: function(xhr, status, error) {
if (xhr.status === 302) {
// 重定向到给定的URL
var redirectUrl = xhr.getResponseHeader('Location');
window.location.href = redirectUrl;
} else {
// 请求失败
console.log('请求失败');
}
}
});
在这个示例中,我们使用jQuery的$.ajax
方法发送Ajax请求。在成功的回调函数中,我们可以处理响应数据。在错误的回调函数中,我们可以通过xhr.status
来检查服务器返回的状态码。如果状态码为302,我们可以通过xhr.getResponseHeader('Location')
来获取重定向URL,并使用window.location.href
将页面重定向到该URL。如果状态码不是302,则请求失败。
上一篇:AJAX没有正确更新变量