不断提交表单。我希望表单在页面加载时提交一次。
document.getElementById('visitor').submit();
应在页面加载时提交一次。当我刷新此页面时,应再次提交
答案 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提交表单。如果您在表单上也有一个“提交”按钮,那么所有这一切都将起作用。