不显示:要再次显示网页,Internet Explorer需要重新发送您之前提交的信息

时间:2011-08-11 17:03:44

标签: javascript asp.net

我希望在发回邮件时不要显示下面的弹出消息。我的页面与定价无关,它显示在回发时更新的ms图表。如何在代码或java脚本中禁用?

  

再次显示网页,Internet Explorer需要重新发送您之前提交的信息。

这是我尝试过的javascript:虽然不起作用。

<script type="text/javascript">
// <!--
function submitForm() {
    window.opener.document.forms[0].submit();
    }
// -->
</script>

并将函数附加到表单中:

<body>
<form id="form1" runat="server" onsubmit="submitForm()">

3 个答案:

答案 0 :(得分:6)

我敢打赌你在JavaScript中这样做了:

FB.Event.subscribe('auth.login', function(response) {
    window.location.reload();
});
FB.Event.subscribe('auth.logout', function(response) {
    window.location.reload();
});

虽然上述代码来自Facebook文档,但它适用于实施Facebook JavaScript SDK的独立网站,会在Internet Explorer和Firefox中破坏您的Facebook应用,导致无限循环。

当Facebook加载应用程序时,它会通过POST发送有关用户身份验证状态的信息。 SDK处理此数据并对用户进行身份验证。

通过告诉JavaScript SDK在成功验证后重新加载页面,Firefox和Internet Explorer将此解释为意味着他们也应该再次发送POST数据。您的应用程序再次收到POST数据,重新验证用户,并重新加载页面,导致无限循环。

解决方案:请勿使用window.location.reload()。相反,您需要设置window.location.href(或以其他方式从浏览器请求中删除POST数据)。

答案 1 :(得分:1)

对于像我这样不太流利的Javascript,我会对Aaron所说的内容进行一些阐述。至少这是我在阅读他的帖子后挖出来的。

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

这将取代document.location.reload();,并按宣传的方式运作。

我最终不得不修改window.location.href字符串,因为我的页面表现不同,具体取决于用户来自哪个页面。所以,这是我后代的完整方法。

    function RefreshParentPage()
    {
        //document.location.reload();
        var redirectURL = window.location.href;

        if (window.location.href.indexOf("showpage=summary") > -1) {
            redirectURL = document.location.href.replace("showpage=summary", "showpage=events")
        }

        window.location.href = redirectURL;
    }

答案 2 :(得分:0)

这意味着此页面是在执行POST请求后获得的。停止这种情况的最佳方法是在服务器代码中处理完POST请求后重定向到同一页面。