我尝试使用一些元素运行循环,例如post form,这个想法是在第一个帖子发送时,发送第二个和第三个等等
<?php
$list="1,2,3";
$exp=explode(",",$list);
$b=0;
foreach($exp as $ids)
{ ?>
<form action="" method="post" id="form_2">
<input type="hidden" name="send_end" value="ok" />
</form>
<script>
document.getElementById('form_2').submit();
</script>
<?php
sleep (5);
if ($b=="2")
{
exit("All Send");
}
$b++;
}
问题是它同时发送并且不起作用,它的想法是先发送1,等待,发送2等,我使用睡眠但它是相同的,所有时间工作发送所有一次性
问题是我如何循环发送,但顺序
关心并感谢您的帮助
答案 0 :(得分:1)
您的要求可以使用javascript实现。请查看以下代码段以获得更多理解。
// Add the X Axis
svg.append("g")
.style("font", "14px open-sans")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x).ticks(d3.timeDay.every(1)).tickFormat(d3.timeFormat("%d/%m")));
// Add the Y Axis
svg.append("g")
.style("font", "14px open-sans")
//.tickSize(-height)
.call(d3.axisLeft(y).ticks(5));
var $list="1,2,3";
var $exp= $list.split(',');
var $b=0;
function createFromAndSubmit($exp,$b){
alert("Form Create & submit - "+($b+1));
var newForm = '<form action="" method="post" id="form_2"><input type="hidden" name="send_end" value="ok" /></form>';
$("#newFrom").html(newForm);
$('#form_2').submit();
$b = $b+1;
if($exp.length == $b){
alert("finished");
}else{
setTimeout(function() {
createFromAndSubmit($exp,$b);
}, 5000);
}
}
createFromAndSubmit($exp,$b);
答案 1 :(得分:0)
您的逻辑错误:您使用javascript提交表单,但是您正在设置PHP的超时。
所以你唯一要做的就是延迟你的html / javascript的生成;它将在15秒后到达浏览器,然后所有表单提交将同时触发。
如果您想使用javascript提交表单,您还应该使用javascript timeout来处理它们之间的延迟。
您应该使用ajax表单提交,因为您不希望每次提交任何表单时都重新加载页面...
php中的替代方法是使用cURL来发出POST请求。那么你就不需要javascript了,你可以像现在一样处理php中的延迟。
修改:另请注意,您的所有表单都具有相同的ID,并且ID必须是唯一的。现在只有第一个(可能......)表格会被提交3次。