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

Spe*_*ick 11 javascript asp.net webforms

在我的ASP.NET WebForms页面中,我弹出了一个Modal窗口.用于显示此模态窗口的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);
}
Run Code Online (Sandbox Code Playgroud)

关闭模态窗口后,我需要刷新父页面(因此最后是location.reload(true);语句),以便在模态窗口中进行更改生效.

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

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

如果您要进行购买,则应单击"取消"以避免重复交易.否则,请单击"重试"以再次显示该网页."

任何想法为什么会这样?

Kha*_* TO 32

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

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

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

  • 在chrome中:`location.reload(true);`无需重新提交即可运行.我刚尝试过...(在IE中 - 它再次询问)+1 (3认同)