Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容的技术。当需要在Ajax请求成功后进行页面重定向时,需要特殊处理,因为Ajax请求本身不会导致浏览器页面跳转。
// 前端代码
$.ajax({
url: '/submit-form',
type: 'POST',
data: formData,
success: function(response) {
if (response.redirect) {
window.location.href = response.redirect;
}
}
});
// 后端示例(Node.js/Express)
app.post('/submit-form', (req, res) => {
// 处理表单数据...
res.json({ redirect: '/success-page' });
});
// 前端代码
$.ajax({
url: '/submit-form',
type: 'POST',
data: formData,
complete: function(xhr) {
if (xhr.status === 302) {
window.location.href = xhr.getResponseHeader('Location');
}
}
});
// 后端示例
app.post('/submit-form', (req, res) => {
// 处理表单数据...
res.redirect(302, '/success-page');
});
fetch('/submit-form', {
method: 'POST',
body: formData
})
.then(response => {
if (response.redirected) {
window.location.href = response.url;
}
});
原因:
解决方案:
解决方案:
$.ajax({
url: '/submit-form',
type: 'POST',
data: formData,
success: function(response) {
// 执行其他操作
saveLocalData();
showSuccessMessage();
// 延迟跳转
setTimeout(function() {
window.location.href = '/success-page';
}, 1000);
}
});
原因: 这是HTTP协议的标准行为,302/303重定向会使后续请求变为GET
解决方案:
没有搜到相关的沙龙