提交表单后页面不会刷新

时间:2017-08-02 07:31:37

标签: php

我通过POST提交表单。我提交表单,一切都很好,但是如果我尝试重新加载表单在提交后转到的新页面,我会得到"你想重新发送数据"消息(FireFox)。它也可能在其他浏览器中发生,但我不确定。

2 个答案:

答案 0 :(得分:0)

您可以在从以下表单获取数据后使用javascript重新加载:

<script > window.location.reload(1);</script>

或者我的建议是使用AJAX发送数据,然后像这样重新加载页面:

    $("#form").submit(function(e) {
        var url = "yourURL"; 

        $.ajax({
            type: "POST",
            url: url,
            data: $("#form").serialize(), 
            success: function(data){
                window.location.href = url; 
            },
            beforeSend: function() {
                $('#loader').show();
                $('#button').hide();
            },
            error: function (request, status, error) {
                alert(request.responseText);
            }
    });

        e.preventDefault(); 
    });

此代码段会将数据发送到您的网址,并在成功将数据重新加载到您的网址后,该网址可能是您现有的网址。

通过这样做,您的浏览器不会显示重新发送数据警报。

答案 1 :(得分:0)

根据我的理解(如果我错了,请更正我)您将表单数据发布到与表单相同的页面,因此当您刷新它时会询问您是否要重新发送数据。

这是现代浏览器中的常见功能,允许您将POST数据重新发送到页面。您应该阻止这种情况,以便人们不会两次提交您的表单。您可以通过创建一个用于处理数据的新页面以及处理后重定向到您想要的页面来实现此目的。

form.php --[POST DATA]--> process.php (redirect) ---> form.php

这会将用户发送到流程页面并处理表单数据,并在完成后将其重定向回表单页面。在用户方面,他们不会在重定向后看到流程页面。