表格正在连续提交。我想要一次加载

时间:2019-07-11 16:39:20

标签: javascript

不断提交表单。我希望表单在页面加载时提交一次。

document.getElementById('visitor').submit();

应在页面加载时提交一次。当我刷新此页面时,应再次提交

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,您的代码在加载时仅提交一次表单。但是提交表单会使服务器发送响应,该响应将作为新页面加载。问题中的信息很少,但是症状表明,您的服务器将同一页面发送回浏览器,浏览器将再次提交表单,从而导致无限的提交/响应循环。

您必须处理导航请求并以不同的方式提交请求。一种方法是向表单添加一个隐藏字段,并在两端检查其值,如下所示:

在PHP文件中创建表单时:

<form id="visitor">
    <!-- Place the other Form Control Elements here -->
    <?php
        if (isset($_GET['submitted'])) {
            // submitted field is defined, this request is a form submission
            echo '<input type="hidden" name="submitted" value="1">'."\n";
        } else {
            // submitted field is not defined, this request is a navigation
            echo '<input type="hidden" name="submitted">'."\n";
        }
    ?>
</form>

页面上的JS部分:

window.onload = function () {
    var form = document.getElementById('visitor');
    if (!form.submitted.value) {
        form.submitted.value = '1';
        form.submit();
    }
}

当您第一次导航到页面时,PHP将隐藏的submitted字段添加到不带值的表单中,并且当JS检测到空值时,它将设置submitted的值并提交表格。

在处理提交请求时,PHP会找到submitted字段,并将新表单的值也设置为1,然后将页面发送回浏览器。 JS发现submitted字段具有值,并且没有提交表单。

如果现在刷新页面,那是一个导航,并且PHP知道将submitted字段添加到不带值的表单中,则页面上的JS提交表单。如果您在表单上也有一个“提交”按钮,那么所有这一切都将起作用。