阻止浏览器询问用户是否确实要刷新页面

时间:2015-07-31 00:26:40

标签: php html css

我有一个功能,用户从下拉列表中选择一个页码,然后将结果提交到同一页面,因此选择的任何内容都可以保持选中状态,但是如果用户尝试刷新页面,它会询问用户是否要重新提交表单。

有没有办法阻止浏览器询问用户是否要刷新页面?

function select($pages,$location) {

    echo "<form method='POST' action='$location'>";
    echo "<select name='select' onchange='this.form.submit()'>";

    while ($tempCount < $pages) {
        $tempCount++;

        if ($_POST['select'] != null && $_POST['select'] == $tempCount) {
        $selected = "selected"; 
    }
    else {
        $selected = null;
    }

    echo "<option $selected value='$tempCount'>Page $tempCount</option>";

    }

    echo "</select>";
    echo "</form>";

    }
}

2 个答案:

答案 0 :(得分:3)

三种可能的解决方案。

  1. 使用GET代替POST。浏览器不会提示用户进行GET。

  2. 使用POST,但将数据发布到永不渲染的插页式广告(“中间”)页面(甚至只是一个http处理程序)。插页式广告应处理发布的数据,然后重定向到显示给用户的真实页面。因为每个重定向都是GET,刷新最终页面不会触发提示。

  3. 既不使用GET也不使用POST。相反,使用AJAX更新幕后需要的内容。

答案 1 :(得分:0)

如果您不必使用POST,则可以使用评论中建议的GET表单。但通常的解决方法是应用POST/Redirect/GET模式。不幸的是,这意味着你必须手动传递数据。

另一种hacky而非万无一失的方法是听F5键按,然后在Javascript中执行window.location = window.location。该分配将导致页面在没有任何警告的情况下重新加载,但如果用户按下浏览器本身的刷新按钮则不起作用。