gpt4 book ai didi

javascript - POST 后重新加载浏览器窗口而不提示用户重新发送 POST 数据

转载 作者:IT王子 更新时间:2023-10-29 02:58:27 25 4
gpt4 key购买 nike

当用户访问我的网站时,每个页面上都有一个“登录”链接。单击此按钮会使用一些 JavaScript 来显示一个覆盖窗口,提示用户输入其凭据。输入这些凭据后,将对 Web 服务器进行 Ajax 调用以验证它们;如果它们有效,则会发回身份验证票证 cookie 并重新加载页面,以便显示页面上特定于经过身份验证的用户或(现在)当前登录用户的任何内容。

我正在通过脚本完成页面重新加载:

window.location.reload();

这对于通过 GET 请求(绝大多数)加载的页面非常有效,但有些页面使用回发表单。因此,如果用户转到这些页面之一,执行回发,然后选择登录,当 window.location.reload() 脚本运行时,他们会收到对话框提示,询问他们是否需要重新提交 POST 正文。

Resubmit POST body dialog box

我想绕过这个问题,我可以告诉浏览器重新加载页面,所以我尝试了:

window.location.href = window.location.href;

但是浏览器没有对上述语句采取任何行动,我推测是因为它认为新 URL 与旧 URL 相同。如果我将以上内容更改为:

window.location.href = window.location.pathname;

它重新加载页面,但我丢失了所有查询字符串参数。

我当前的解决方法足够了,但不够漂亮 - 简而言之,我将查询字符串参数添加到当前 window.location.href 值,然后将其分配回 window.location .href 通过调用reloadPage("justLoggedIn"),其中reloadPage函数为:

function reloadPage(querystringTackon) {
var currentUrl = window.location.href;

if (querystringTackon != null && querystringTackon.length > 0 && currentUrl.indexOf(querystringTackon) < 0) {
if (currentUrl.indexOf("?") < 0)
currentUrl += "?" + querystringTackon;
else
currentUrl += "&" + querystringTackon;
}

window.location.href = currentUrl;
}

这有效,但它导致 URL 为 www.example.com/SomeFolder/SomePage.aspx?justLoggedIn,这看起来很俗气。

在 JavaScript 中有没有办法让它执行 GET 重新加载而不提示用户重新提交 POST 数据?我需要确保任何现有的查询字符串参数都不会丢失。

最佳答案

window.location.href = window.location.href;

不要问我为什么它有效..但它确实有效:)。
就像 js 引擎解释我想的逻辑的方式。

关于javascript - POST 后重新加载浏览器窗口而不提示用户重新发送 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com