javascript - 要再次显示该网页,Internet Explorer 需要重新发送

标签 javascript asp.net webforms

在我的 ASP.NET WebForms 页面中,我有一个弹出的模态窗口。显示此模态窗口的 javascript 代码如下:

function OpenMailAddressWin(subscriberContactRelationGid, routeId, btn) {
    window.showModalDialog("SubscriberSecondaryAddress.aspx" + BuildQueryStringValuesForSubscriber(subscriberContactRelationGid, routeId, returntxtReceiptDate().value), this, strWindowFeatures + ";scroll:no;dialogWidth:442px;dialogHeight:350px");
    location.reload(true);
}

模态窗口关闭后,我需要刷新父页面(因此 location.reload(true); 最后的语句)以使模态窗口中所做的更改生效。

现在的问题是,有时(不是每次,真气人)当我关闭这个模式窗口时,我会收到一个警告弹出窗口,上面写着:

"要再次显示该网页,Internet Explorer 需要重新发送您最近提交的信息。

如果您正在购买,您应该点击取消以避免重复交易。否则,请单击“重试”以再次显示该网页。”

知道为什么会这样吗?

最佳答案

这是浏览器中的双重提交问题。

当使用 POST 请求加载页面并且您尝试使用 location.reload(true); 重新加载页面时,浏览器需要向服务器发送另一个 POST 请求,这可能会导致问题因为 POST 应该更改服务器上的状态。因此,浏览器需要用户的确认。为了解决这个问题,我们通常使用POST-REDIRECT-GET模式。

在您的情况下,只需使用 location.href = location.href 即可解决问题,因为这将使用 GET 重新加载页面。

关于javascript - 要再次显示该网页,Internet Explorer 需要重新发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17723944/

相关文章:

javascript - 如何比较 2 个复选框的值

javascript - bxslider 不工作,图像全部垂直排列

c# - 从问题背后的代码调用JS函数

asp.net - 将 Web 表单页面路由到 MVC3 应用程序中的子文件夹

java - 将 Web 服务 (wsdl) 公开为 Web 表单

javascript - 如何忽略 XmlHttpRequest 中的自签名证书

javascript - 如何从 Highcharts 同一页面上的 HTML DIV 获取 JSON 数据?

c# - 如何在 ASP.NET MVC Web Api 上使用外部身份验证服务

c# - 系统参数异常 : Parameter is not valid

javascript - 我想通过解析通过网络表单收到的数据来自动填充 gmail 注册页面