Response.redirect()不是一个函数在香草JS?



我试图重定向到另一个页面后,我收到一个响应从post取回,但正如标题所说,它不工作。

以下是函数:

// send/post json
async function postData(json_data, api_path) {
const response = await fetch(api_path, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
body: json_data,
redirect: 'follow'
});
console.log("postData response: ", response);
return response;
}
// send JSON data to server on /api/${destination}
function saveSettings(form, destination) {
let json_data = toJSONstring(form);
let res;
console.log(json_data);
postData(json_data, `/api/${destination}`)
.then((response) => {
res = response;
if (!response.ok) {
throw new Error(`HTTP error, status = ${response.status}`);
}
return response.text();
}).then(text => {
if (destination === 'network/post') {
connected = false;
updatingToast(`You are no longer connected to the device !`, false);
updatingToast(`Please navigate to ${text}`, true, text);
}
console.log('res: ', res);
res.redirect(res.status, res.url);
});
}

每个console.log();返回Response {type: 'basic', url: 'http://192.168.0.100/dashboard', redirected: true, status: 200, ok: true, …}

如果我把response.redirect(response.status, response.url);放在第一个then()中,我得到同样的错误。

响应也是如此。在香草JS中存在重定向吗?

我不想使用window.location.href或任何其他类似的选项,因为它绕过HTTP认证头。

我看到你在fetch中给出了'follow'参数

您可以使用下面的代码检查响应是否被重定向。如果没有重定向,您可以简单地更改窗口位置并强制重定向。

if (res.redirected) {
window.location.href = res.url;
}

编辑:

在对重定向方法做了更多的研究之后,我发现您需要切换URL和状态变量,参见:https://developer.mozilla.org/en-US/docs/Web/API/Response/redirect

相关内容

  • 没有找到相关文章

最新更新