目前,我有一个JavaScript函数,在页面加载时提交一个表单,问题是,这个函数永远不会停止,它会永远进入循环,我试图在条件满足时停止它但是对于某些它不起作用的原因。
条件是i==1
,但它一直持续。
<script type="text/javascript">
var i = 0;
function loadit(){
if (i==1){
return;
}else{
document.frm.submit();
i++
}
}
</script>
</head>
<body onload="loadit()">
答案 0 :(得分:1)
循环的原因是你在每个加载时将i
重置为0(因此,你的循环),你需要在其他地方存储i
,检查表单是否已提交,然后按增量增加。
所以这是一个使用PHP的简单示例。它将在i
下的网址参数中查找i=?
值。如果未设置,则自动将其设置为0.
<?php
// this will check for the i in the URL, if it's not there, set $i to 0
$i = (isset($_GET['i']) ? urlencode($_GET['i']) : 0)
?>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(function loadit() {
// set `i` to `$i`
var i = <?= $i; ?>;
var frm = $('#form');
var con = $('#content');
if (i == 1) {
return true;
} else {
frm.submit();
i++;
}
});
</script>
</head>
<body onload="loadit()">
<!-- increment $i for the action field. -->
<form id="form" action="?i=<?= ++$i; ?>" method="post">
<input id="content" type="hidden" value="Something_here">
</form>
</body>
另一种方法是使用Ajax,并使用响应来确定是否需要再次提交。
答案 1 :(得分:-2)
您提交了一个表单,以便刷新您的页面,然后再次点击onload。 如果您希望每次页面加载时都使用ajax提交表单。
您可以通过删除document.frm.submit();
并执行console.log来测试它。