在使用fetch和wait时,如何将用户重定向到不同的页面



在使用fetch和wait对我的站点api进行POST调用后,我一直试图将用户重定向到另一个页面。我收到一个回复,上面写着GET localhost:10004/page。通常在$.ajax或xmlHTTPRequest中,它会自动重定向,但当使用新的获取和等待语法时,它无法自动重定向。

这是我的密码。

我已经尝试过使用redirect="follow",之后就不会重定向了。

fetch('http://localhost:10004/api', {
method: 'POST', // or 'PUT'
body: JSON.stringify(obj), 
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow'
})
.then(response => {
//what to write here to redirect the user
}).catch(error => {
console.error('Error:', error);
});

编辑:1已将重定向的密钥更改为重定向。我想澄清的是,我想在没有window.location方法(如window.location.replacement或window.location.htm)的情况下实现重定向。因此,在解决这个问题一个月左右之后。我想我已经解决了这个问题,所以在使用fetch api时。浏览器确实会从客户端向服务器发送另一个重定向位置的请求。但有趣的是,这不是一个文档请求,而是一个提取请求,浏览器认为它不必呈现,并且是异步的,然后客户端接收html输出,但浏览器拒绝在窗口中呈现页面。

您可以通过设置window.location对象来实现重定向:

window.location.href = "https://www.google.com"

https://developer.mozilla.org/en-US/docs/Web/API/Window/location

在您的示例中,您只使用了一个then,但应该是两个,如下所示。

fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' })
.then(res => res.json()) // expecting a json response
.then(json => {
console.log(json)
window.location.href = data.redirect;
});

最新更新